use of org.geotools.data.DefaultTransaction in project hale by halestudio.
the class ShapefileInstanceWriter method writeToFile.
/**
* Final step to write to the shape file using transaction.
*
* @param schemaDataStoreMap data store for the shape file.
* @param schemaFtMap used as a template to describe the file contents.
* @param schemaFeaturesMap for each schema, each geom list of features to
* be written to the shape file.
* @throws IOException if any.
*/
private void writeToFile(Map<String, Map<String, ShapefileDataStore>> schemaDataStoreMap, Map<String, Map<String, SimpleFeatureType>> schemaFtMap, Map<String, Map<String, List<SimpleFeature>>> schemaFeaturesMap) throws IOException {
// extract each schema
for (Entry<String, Map<String, ShapefileDataStore>> schemaEntry : schemaDataStoreMap.entrySet()) {
String localPart = schemaEntry.getKey();
// extract each geometry.
for (Entry<String, ShapefileDataStore> geomEntry : schemaEntry.getValue().entrySet()) {
Transaction transaction = new DefaultTransaction(ShapefileConstants.CREATE_CONSTANT);
String typeName = geomEntry.getValue().getTypeNames()[0];
SimpleFeatureSource geomSpecificFeatureSource = geomEntry.getValue().getFeatureSource(typeName);
if (geomSpecificFeatureSource instanceof SimpleFeatureStore) {
SimpleFeatureStore geomSpecificFeatureStore = (SimpleFeatureStore) geomSpecificFeatureSource;
// create collection to write to the shape file.
SimpleFeatureCollection collection = new ListFeatureCollection(schemaFtMap.get(localPart).get(geomEntry.getKey()), schemaFeaturesMap.get(localPart).get(geomEntry.getKey()));
geomSpecificFeatureStore.setTransaction(transaction);
try {
geomSpecificFeatureStore.addFeatures(collection);
transaction.commit();
} catch (IOException e) {
transaction.rollback();
throw e;
} finally {
transaction.close();
}
} else {
// throw exception
transaction.close();
throw new IOException(typeName + " does not support read/write access");
}
}
}
}
use of org.geotools.data.DefaultTransaction in project coastal-hazards by USGS-CIDA.
the class FeatureCollectionExport method writeToShapefile.
public boolean writeToShapefile() throws MalformedURLException, IOException {
boolean success = false;
// SimpleFeatureIterator features = simpleFeatureCollection.features();
SimpleFeatureType type = buildFeatureType();
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
File shpFile = checkAndCreateFile();
Map datastoreConfig = new HashMap<>();
datastoreConfig.put("url", shpFile.toURI().toURL());
ShapefileDataStore shpfileDataStore = (ShapefileDataStore) factory.createNewDataStore(datastoreConfig);
shpfileDataStore.createSchema(type);
shpfileDataStore.forceSchemaCRS(this.crs);
// DataStore dataStore = factory.createNewDataStore(datastoreConfig);
SimpleFeatureStore featureStore = (SimpleFeatureStore) shpfileDataStore.getFeatureSource(type.getName());
Transaction t = new DefaultTransaction();
SimpleFeatureIterator fi = null;
try {
// Copied directly from Import process
featureStore.setTransaction(t);
fi = simpleFeatureCollection.features();
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(type);
while (fi.hasNext()) {
SimpleFeature source = fi.next();
fb.reset();
for (AttributeDescriptor desc : type.getAttributeDescriptors()) {
Name attributeName = desc.getName();
Object attributeValue = source.getAttribute(attributeName);
if (null == attributeValue) {
attributeValue = NULL_PLACEHOLDER;
}
fb.set(attributeName, attributeValue);
}
SimpleFeature target = fb.buildFeature(null);
featureStore.addFeatures(DataUtilities.collection(target));
}
// successful if it made it this far
success = true;
} finally {
t.commit();
t.close();
IOUtils.closeQuietly(fi);
}
return success;
}
use of org.geotools.data.DefaultTransaction in project coastal-hazards by USGS-CIDA.
the class FeatureCollectionExportTest method testHttpComponentsGetter.
@Test
@Ignore
public void testHttpComponentsGetter() throws Exception {
HttpComponentsWFSClient wfs = new HttpComponentsWFSClient();
wfs.setupDatastoreFromEndpoint("http://cida-wiwsc-cchdev:8081/geoserver/wfs");
// FilterFactory filterFactory = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints());
SimpleFeatureCollection featureCollection = wfs.getFeatureCollection("proxied:atl_cvi", null);
SimpleFeatureType schema = GMLStreamingFeatureCollection.unwrapSchema(featureCollection.getSchema());
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
Map datastoreConfig = new HashMap<>();
datastoreConfig.put("url", FileUtils.getFile(FileUtils.getTempDirectory(), "test3.shp").toURI().toURL());
ShapefileDataStore shpfileDataStore = (ShapefileDataStore) factory.createNewDataStore(datastoreConfig);
shpfileDataStore.createSchema(schema);
shpfileDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
SimpleFeatureStore featureStore = (SimpleFeatureStore) shpfileDataStore.getFeatureSource();
Transaction t = new DefaultTransaction();
// Copied directly from Import process
featureStore.setTransaction(t);
Query query = new Query();
query.setCoordinateSystem(DefaultGeographicCRS.WGS84);
SimpleFeatureIterator fi = featureCollection.features();
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(schema);
while (fi.hasNext()) {
SimpleFeature source = fi.next();
fb.reset();
for (AttributeDescriptor desc : schema.getAttributeDescriptors()) {
fb.set(desc.getName(), source.getAttribute(desc.getName()));
}
SimpleFeature target = fb.buildFeature(null);
target.setDefaultGeometry(source.getDefaultGeometry());
featureStore.addFeatures(DataUtilities.collection(target));
}
t.commit();
t.close();
}
use of org.geotools.data.DefaultTransaction in project coastal-hazards by USGS-CIDA.
the class FeatureCollectionExportTest method splitterTest.
@Test
// for now
@Ignore
public void splitterTest() throws Exception {
// get geometry
HttpComponentsWFSClient wfs1 = new HttpComponentsWFSClient();
wfs1.setupDatastoreFromEndpoint("http://cida-wiwsc-cchdev:8081/geoserver/wfs");
FilterFactory2 filterFactory = CommonFactoryFinder.getFilterFactory2(GeoTools.getDefaultHints());
PropertyIsEqualTo equals = filterFactory.equals(filterFactory.property("STATEFP"), filterFactory.literal(37));
SimpleFeatureCollection featureCollection = wfs1.getFeatureCollection("splitter:tl_2013_coastal_states", equals);
SimpleFeatureIterator features = featureCollection.features();
// only deal with one
Geometry geom = null;
if (features.hasNext()) {
SimpleFeature next = features.next();
geom = (Geometry) next.getDefaultGeometry();
}
// then use geometry as filter
HttpComponentsWFSClient wfs2 = new HttpComponentsWFSClient();
wfs2.setupDatastoreFromEndpoint("http://cida-wiwsc-cchdev:8081/geoserver/wfs");
FilterFactory2 filterFactory2 = CommonFactoryFinder.getFilterFactory2(GeoTools.getDefaultHints());
Contains contains = filterFactory2.contains(filterFactory2.property("the_geom"), filterFactory2.literal(geom));
SimpleFeatureCollection featureCollection2 = wfs2.getFeatureCollection("proxied:atl_cvi", contains);
SimpleFeatureType schema = GMLStreamingFeatureCollection.unwrapSchema(featureCollection2.getSchema());
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
Map datastoreConfig = new HashMap<>();
datastoreConfig.put("url", FileUtils.getFile(FileUtils.getTempDirectory(), "splitter.shp").toURI().toURL());
ShapefileDataStore shpfileDataStore = (ShapefileDataStore) factory.createNewDataStore(datastoreConfig);
shpfileDataStore.createSchema(schema);
shpfileDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
SimpleFeatureStore featureStore = (SimpleFeatureStore) shpfileDataStore.getFeatureSource();
Transaction t = new DefaultTransaction();
// Copied directly from Import process
featureStore.setTransaction(t);
Query query = new Query();
query.setCoordinateSystem(DefaultGeographicCRS.WGS84);
SimpleFeatureIterator fi = featureCollection2.features();
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(schema);
while (fi.hasNext()) {
SimpleFeature source = fi.next();
fb.reset();
for (AttributeDescriptor desc : schema.getAttributeDescriptors()) {
fb.set(desc.getName(), source.getAttribute(desc.getName()));
}
SimpleFeature target = fb.buildFeature(null);
target.setDefaultGeometry(source.getDefaultGeometry());
featureStore.addFeatures(DataUtilities.collection(target));
}
t.commit();
t.close();
}
use of org.geotools.data.DefaultTransaction in project coastal-hazards by USGS-CIDA.
the class FeatureCollectionExportTest method testWriteSolo.
@Test
@Ignore
public void testWriteSolo() throws Exception {
WFSDataStoreFactory datastore = new WFSDataStoreFactory();
Map params = new HashMap<>();
params.put(WFSDataStoreFactory.URL.key, new URL("http://coastalmap.marine.usgs.gov/cmgp/National/cvi_WFS/MapServer/WFSServer?service=WFS&request=GetCapabilities&version=1.0.0"));
params.put(WFSDataStoreFactory.WFS_STRATEGY.key, "arcgis");
params.put(WFSDataStoreFactory.TIMEOUT.key, 15000);
params.put(WFSDataStoreFactory.TRY_GZIP.key, "true");
WFSDataStore wfs = datastore.createDataStore(params);
String[] typeNames = wfs.getTypeNames();
SimpleFeatureSource featureSource = wfs.getFeatureSource(typeNames[2]);
SimpleFeatureType schema = featureSource.getSchema();
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
Map datastoreConfig = new HashMap<>();
datastoreConfig.put("url", FileUtils.getFile(FileUtils.getTempDirectory(), "test3.shp").toURI().toURL());
ShapefileDataStore shpfileDataStore = (ShapefileDataStore) factory.createNewDataStore(datastoreConfig);
shpfileDataStore.createSchema(schema);
shpfileDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
SimpleFeatureStore featureStore = (SimpleFeatureStore) shpfileDataStore.getFeatureSource();
Transaction t = new DefaultTransaction();
// Copied directly from Import process
featureStore.setTransaction(t);
Query query = new Query();
query.setCoordinateSystem(DefaultGeographicCRS.WGS84);
SimpleFeatureIterator fi = featureSource.getFeatures(query).features();
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(schema);
while (fi.hasNext()) {
SimpleFeature source = fi.next();
fb.reset();
for (AttributeDescriptor desc : schema.getAttributeDescriptors()) {
fb.set(desc.getName(), source.getAttribute(desc.getName()));
}
SimpleFeature target = fb.buildFeature(null);
target.setDefaultGeometry(source.getDefaultGeometry());
featureStore.addFeatures(DataUtilities.collection(target));
}
t.commit();
t.close();
}
Aggregations