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();
}
==========================================================