From: Amador A. C. <sph...@gm...> - 2010-04-29 14:15:46
|
I've the follow code, but I can't add multiple geometries because my SimpleFeatureType is "hard coded", how do I to load the type of feature dinamyc? package demo.geometry01; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LinearRing; import com.vividsolutions.jts.geom.Polygon; import org.geotools.data.DataUtilities; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollections; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.geometry.jts.JTSFactoryFinder; import org.geotools.map.DefaultMapContext; import org.geotools.map.MapContext; import org.geotools.swing.JMapFrame; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; public class SimpleGeometryLab { GeometryFactory gf = JTSFactoryFinder.getGeometryFactory(null); FeatureCollection col = FeatureCollections.newCollection(); SimpleFeatureBuilder sfb; FeatureCollection<SimpleFeatureType, SimpleFeature> miCol = FeatureCollections.newCollection(); MapContext map; JMapFrame frame; public static void main(String[] args) throws Exception { SimpleGeometryLab me = new SimpleGeometryLab(); } public SimpleGeometryLab() throws Exception { map = new DefaultMapContext(); frame = new JMapFrame(map); map.setTitle("Geometrias simples"); //Here my problem... ¬¬ SimpleFeatureType TYPE = DataUtilities.createType( "Location", "location:Point:srid=4326," + "name:String"); sfb = new SimpleFeatureBuilder(TYPE); sfb.add(crearPunto(10, 30)); sfb.add(crearLinea()); SimpleFeature feat = sfb.buildFeature(null); miCol.add(feat); map.addLayer(miCol, null); frame.setSize(800, 600); frame.setVisible(true); } private Geometry crearPunto(int x, int y) { Coordinate c = new Coordinate(x, y); return gf.createPoint(c); } //Not in use private Geometry crearLinea() { Coordinate[] c = new Coordinate[]{ new Coordinate(100, 112), new Coordinate(200, 100), new Coordinate(85, 46) }; return gf.createLineString(c); } //Not in use private Geometry createCircle(double x, double y, final double r) { final int l = 32; Coordinate coords[] = new Coordinate[l + 1]; for (int i = 0; i < l; i++) { double angle = ((double) i / (double) l) * Math.PI * 2.0; double dx = Math.cos(angle) * r; double dy = Math.sin(angle) * r; coords[i] = new Coordinate((double) x + dx, (double) y + dy); } coords[l] = coords[0]; LinearRing ring = gf.createLinearRing(coords); Polygon polygon = gf.createPolygon(ring, null); return polygon; } } -- TSU. Amador Cuenca |