Hi,
I'm new to both uDig and GeoTools. I've
been able to use the various examples and lists from around the web to make
progress in a number of areas, but I've hit a snag in trying to create a new
feature collection to be displayed as a new
layer on an existing map. I'm using the uDig 1.2.0 release and
coding in a plugin based on the distance tool example to trigger a few things
with a button click. Here is what I currently have, pulled together from
various examples on the web. When I run
this code I see the following:
* New layer
called Flag in the Layers View
* Flag layer
has these properties
* Bounds (0,0)
(-1,-1)
*
Filter.Exclude
* Feature Type has correct
fields
* Entry called
Scratch with child Flag in Catalog tree
* Nothing in
the Table view when Flag layer is selected
* Column
headers in the Table view called FID, ID, and Name (ID and Name come from my
feature construction, FID not sure?)
Questions:
1) Am I even
close?
2) I saw some
references to SimpleFeatureCollection code, but think this is from a newer
GeoTools than uDig is using?
3) How do I get my
supplied attributes to show up in the table and a point to show up on the
map?
Thanks for any
help. Many uDig features are meeting my needs. Figuring out how to
add points from code will be very useful and hopefully help some others sort out
the API in this area, since it seems it has been in
transition.
-
Ned
==========================================================
SimpleFeatureTypeBuilder builder = new
SimpleFeatureTypeBuilder();
builder.setName( "Flag"
);
builder.setNamespaceURI( "http://localhost/" );
builder.setCRS(
DefaultGeographicCRS.WGS84 );
//add attributes in order
builder.add(
"Location", Point.class );
builder.add( "ID", Integer.class
);
builder.add( "Name", String.class );
//build the type
final SimpleFeatureType FLAG =
builder.buildFeatureType();
//create the builder
SimpleFeatureBuilder
fbuilder = new SimpleFeatureBuilder(FLAG);
GeometryFactory gf = new
com.vividsolutions.jts.geom.GeometryFactory();
Coordinate[] coords = {new
Coordinate(114.4456894350221,-33.0429697801666, 0.0)};
//add the attributes
fbuilder.set("Location",
new Point(CoordinateArraySequenceFactory.instance().create(coords),
gf));
fbuilder.set("Name", "theName" );
fbuilder.set("ID",
99);
//build the feature
SimpleFeature feature =
fbuilder.buildFeature( "test" );
// get the selected layer
IMap map =
ApplicationGIS.getActiveMap();
IGeoResource stationGeoResource = CatalogPlugin
.getDefault ().getLocalCatalog().createTemporaryResource(FLAG);
// create list of IGeoResource
List
<IGeoResource> geoResourceList = new
LinkedList<IGeoResource>();
geoResourceList.add(stationGeoResource);
List layerList = ApplicationGIS.addLayersToMap(map,
geoResourceList, -1);
FeatureSource stationFeatureSource;
try
{
// get feature
sourc
stationFeatureSource = ((ILayer)
layerList.get(map.getMapLayers().size())).getResource(FeatureStore.class,
null);
//get
FeatureCollection
FeatureCollection features =
stationFeatureSource.getFeatures();
//add
new feature
features.add(feature);
((ILayer)
layerList.get(map.getMapLayers().size())).getResource(FeatureStore.class,
null).addFeatures(features);
} catch (IOException e1)
{
// TODO Auto-generated catch
block
e1.printStackTrace();
}
==========================================================