Hello Andy,
There is no problema with the file path. In fact that code creates a .shp,
.dbf, .fix, .prj and .shx files perfectly.
However, I can see the data (columns with Data1 and Data2 values) in the
table, but the geometry does not appear. That's the problem.
Can some of you try this code and try to open it in a GIS viewer? And see
why geometry does not appear?
Thanks again!
Cris
2014-11-13 12:48 GMT+01:00 Andy Turner <a.g.d.tur...@leeds.ac.uk>:
> Hi Cris,
>
> Not sure. The ruta filename looks a bit odd to me with backslashes. Do you
> get the same problem if you replace the "\" with "/"?
>
> Andy
>
> ________________________________________
> From: Cris Lacumba [cris.lacu...@gmail.com]
> Sent: 13 November 2014 10:42
> To: geotools-gt2-users@lists.sourceforge.net
> Subject: [Geotools-gt2-users] Fwd: [Create a SHP file with a polygon]
>
> Hello to all,
>
> I'm trying to create a SHP with a simple polygon but I'm not able to
> achieve it.
>
> Here is my sample code:
>
> --
>
>
> package GeotoolsPruebas;
>
> import java.io.File;
>
> import java.io.Serializable;
>
> import java.util.HashMap;
>
> import java.util.Map;
>
> import com.vividsolutions.jts.geom.Coordinate;
>
> import com.vividsolutions.jts.geom.GeometryFactory;
>
> import com.vividsolutions.jts.geom.LinearRing;
>
> import com.vividsolutions.jts.geom.Polygon;
>
> import org.geotools.data.DefaultTransaction;
>
> import org.geotools.data.Transaction;
>
> import org.geotools.data.shapefile.ShapefileDataStore;
>
> import org.geotools.data.shapefile.ShapefileDataStoreFactory;
>
> import org.geotools.data.simple.SimpleFeatureSource;
>
> import org.geotools.data.simple.SimpleFeatureStore;
>
> import org.geotools.feature.DefaultFeatureCollection;
>
> import org.geotools.feature.simple.SimpleFeatureBuilder;
>
> import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
>
> import org.geotools.geometry.jts.JTSFactoryFinder;
>
> import org.geotools.referencing.crs.DefaultGeographicCRS;
>
> import org.opengis.feature.simple.SimpleFeature;
>
> import org.opengis.feature.simple.SimpleFeatureType;
>
> public class PruebaGeotools {
>
> public PruebaGeotools() {
>
> //Create de SHP Type
>
> SimpleFeatureType TYPE = createFeatureType();
>
> DefaultFeatureCollection collection = new DefaultFeatureCollection();
>
> try {
>
> GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
>
> Coordinate[] coords =
>
> new Coordinate[] {new Coordinate(4, 0), new Coordinate(2, 2),
>
> new Coordinate(4, 4), new Coordinate(6, 2), new Coordinate(4, 0) };
>
> LinearRing ring = geometryFactory.createLinearRing( coords );
>
> LinearRing holes[] = null; // use LinearRing[] to represent holes
>
> Polygon polygon = geometryFactory.createPolygon(ring, holes );
>
>
>
> SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(TYPE);
>
> featureBuilder.add(polygon);
>
> featureBuilder.add("Data1");
>
> featureBuilder.add("Data2");
>
> SimpleFeature feature = featureBuilder.buildFeature("Element 1");
>
> collection.add(feature);
>
> //SAVE DATA TO A FILE
>
> String ruta = "C:\\Data\\Test.shp";
>
> File file = new File(ruta);
>
> ShapefileDataStoreFactory dataStoreFactory = new
> ShapefileDataStoreFactory();
>
> Map<String, Serializable> params = new HashMap<String, Serializable>();
>
> params.put("url", file.toURI().toURL());
>
> params.put("create spatial index", Boolean.TRUE);
>
> ShapefileDataStore newDataStore = (ShapefileDataStore)
> dataStoreFactory.createNewDataStore(params);
>
> newDataStore.createSchema(TYPE);
>
> newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
>
> /*
>
> * Write the features to the shapefile
>
> */
>
> Transaction transaction = new DefaultTransaction("create");
>
> String typeName = newDataStore.getTypeNames()[0];
>
> SimpleFeatureSource featureSource =
> newDataStore.getFeatureSource(typeName);
>
> if (featureSource instanceof SimpleFeatureStore) {
>
> SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
>
> featureStore.setTransaction(transaction);
>
> try {
>
> //ADD ALL THE FEATURES
>
> featureStore.addFeatures(collection);
>
> transaction.commit();
>
> } catch (Exception problem) {
>
> problem.printStackTrace();
>
> transaction.rollback();
>
> } finally {
>
> transaction.close();
>
> }
>
> System.exit(0); // success!
>
> } else {
>
> System.out.println(typeName + " does not support read/write access");
>
> System.exit(1);
>
> }
>
> } catch(Exception e) {
>
> e.printStackTrace();
>
> }
>
> }
>
> private static SimpleFeatureType createFeatureType() {
>
> SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
>
> builder.setName("Location");
>
> builder.setCRS(DefaultGeographicCRS.WGS84); // <- Coordinate reference
> system
>
> // add attributes in order
>
> builder.add("Location", Polygon.class);
>
> builder.length(15).add("Name1", String.class); // <- 15 chars width for
> name field
>
> builder.length(15).add("Name2", String.class); // <- 15 chars width for
> name field
>
> // build the type
>
> final SimpleFeatureType LOCATION = builder.buildFeatureType();
>
> return LOCATION;
>
> }
>
>
>
> public static void main(String args[]) {
>
> PruebaGeotools objPruebaGeotools = new PruebaGeotools();
>
> }
>
> }
>
>
> --
>
> What I'm doing wrong?
>
> Thanks in advance!
>
> Regards
>
> Cris
>
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users