本文整理汇总了Java中org.geotools.data.shapefile.ShapefileDataStore.createSchema方法的典型用法代码示例。如果您正苦于以下问题:Java ShapefileDataStore.createSchema方法的具体用法?Java ShapefileDataStore.createSchema怎么用?Java ShapefileDataStore.createSchema使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.geotools.data.shapefile.ShapefileDataStore
的用法示例。
在下文中一共展示了ShapefileDataStore.createSchema方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: makeLineLayer
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
private void makeLineLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs )
throws MalformedURLException, IOException {
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
String shapefileName = types[0].getShapefileName();
String typeName = types[0].getName();
b.setName(typeName);
b.setCRS(mapCrs);
b.add("the_geom", LineString.class);
for( IEpanetType type : types ) {
b.add(type.getAttributeName(), type.getClazz());
}
SimpleFeatureType tanksType = b.buildFeatureType();
ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory();
File file = new File(baseFolder, shapefileName);
Map<String, Serializable> create = new HashMap<String, Serializable>();
create.put("url", file.toURI().toURL());
ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create);
newDataStore.createSchema(tanksType);
Transaction transaction = new DefaultTransaction();
SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource();
featureStore.setTransaction(transaction);
try {
featureStore.addFeatures(new DefaultFeatureCollection());
transaction.commit();
} catch (Exception problem) {
problem.printStackTrace();
transaction.rollback();
} finally {
transaction.close();
}
}
示例2: writeShapefile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
private void writeShapefile(MemoryDataStore memoryDataStore, File outputFile) throws Exception {
SimpleFeatureSource featureSource = memoryDataStore.getFeatureSource(memoryDataStore.getTypeNames()[0]);
SimpleFeatureType featureType = featureSource.getSchema();
Map<String, java.io.Serializable> creationParams = new HashMap<String, java.io.Serializable>();
creationParams.put("url", DataUtilities.fileToURL(outputFile));
ShapefileDataStoreFactory factory = (ShapefileDataStoreFactory) FileDataStoreFinder.getDataStoreFactory("shp");
ShapefileDataStore dataStore = (ShapefileDataStore) factory.createNewDataStore(creationParams);
dataStore.setCharset(Charset.forName("UTF-8"));
dataStore.createSchema(featureType);
SimpleFeatureStore featureStore = (SimpleFeatureStore) dataStore.getFeatureSource(dataStore.getTypeNames()[0]);
Transaction transaction = new DefaultTransaction();
try {
SimpleFeatureCollection collection = featureSource.getFeatures();
featureStore.addFeatures(collection);
transaction.commit();
} catch (IOException e) {
try {
transaction.rollback();
throw new Exception("Failed to commit data to feature store", e);
} catch (IOException e2 ) {
logger.error("Failed to commit data to feature store", e);
throw new Exception("Transaction rollback failed", e2);
}
} finally {
transaction.close();
}
}
示例3: write
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
public static <T> void write(File file,
Consumer<SimpleFeatureTypeBuilder> fun1,
BiConsumer<SimpleFeatureBuilder, T> fun2,
List<T> geometries) {
try {
SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
typeBuilder.setName("MyFeatureType");
typeBuilder.setCRS(DefaultGeographicCRS.WGS84);
fun1.accept(typeBuilder);
SimpleFeatureType type = typeBuilder.buildFeatureType();
SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(type);
AtomicInteger id = new AtomicInteger(0);
List<SimpleFeature> geoms = geometries.stream().map(g -> {
fun2.accept(featureBuilder, g);
return featureBuilder.buildFeature(String.valueOf(id.getAndIncrement()));
}).collect(toList());
ShapefileDataStoreFactory datastoreFactory = new ShapefileDataStoreFactory();
Map<String, Serializable> params = newHashMap();
params.put("url", file.toURI().toURL());
params.put("create spatial index", Boolean.TRUE);
ShapefileDataStore datastore = (ShapefileDataStore) datastoreFactory.createNewDataStore(params);
datastore.createSchema(type);
Transaction transaction = new DefaultTransaction("create");
String typeName = datastore.getTypeNames()[0];
SimpleFeatureSource featureSource = datastore.getFeatureSource(typeName);
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
SimpleFeatureCollection collection = new ListFeatureCollection(type, geoms);
featureStore.setTransaction(transaction);
featureStore.addFeatures(collection);
transaction.commit();
transaction.close();
datastore.dispose();
}
catch (IOException e) {
throw propagate(e);
}
}
示例4: featureStore
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
/**
* Creates a new Feature Store for writing features
* @param originalSource the original feature source, used for bounds and geometry descriptor information
* @param path the location where the store will be saved
* @param attributeTypes a map of attribute information (name, type) to create the schema
* @return an empty store for writing features
* @throws IOException if the file cannot be created
*/
public static AbstractDataStore featureStore(
FeatureSource originalSource,
String path,
Map<String,Class<?>> attributeTypes
) throws IOException {
// Create store
DataStoreFactorySpi storeFactory = new ShapefileDataStoreFactory();
File file = new java.io.File(path);
HashMap<String, Serializable> createFlags = new HashMap<String, Serializable>();
createFlags.put("url", file.toURI().toURL());
ShapefileDataStore saveStore = (ShapefileDataStore)storeFactory.createNewDataStore(createFlags);
// Set flags and descriptors
saveStore.setStringCharset(Charset.forName("UTF-8"));
FeatureType oldSchema = originalSource.getSchema();
final List<AttributeDescriptor> descriptorList = new java.util.ArrayList<AttributeDescriptor>();
descriptorList.add(oldSchema.getGeometryDescriptor());
// Set attributes
for (Map.Entry<String, Class<?>> entry: attributeTypes.entrySet()) {
AttributeTypeBuilder keyTB = new AttributeTypeBuilder();
keyTB.setName(entry.getKey());
keyTB.setBinding(entry.getValue());
keyTB.setNillable(true);
AttributeDescriptor desc = keyTB.buildDescriptor(entry.getKey());
descriptorList.add(desc);
}
// Finalize schema
SimpleFeatureTypeImpl newSchema = new SimpleFeatureTypeImpl(
new NameImpl(file.getName()),
descriptorList,
oldSchema.getGeometryDescriptor(),
oldSchema.isAbstract(),
oldSchema.getRestrictions(),
oldSchema.getSuper(),
null);
saveStore.createSchema(newSchema);
return saveStore;
}
示例5: init
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
@Override
public void init() {
LOGGER.info("Output as shapefile: " + outFile);
file = new File(outFile);
try {
// Define Schema
final SimpleFeatureType TYPE = createFeatureType();
featureBuilder = new SimpleFeatureBuilder(TYPE);
geomF = new GeometryFactory();
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
// define parameter for ShapeFileDataStore object
Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put("url", file.toURI().toURL());
params.put("create spatial index", Boolean.TRUE);
dataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
dataStore.createSchema(TYPE);
// define transaction
transaction = new DefaultTransaction("create");
String typeName = dataStore.getTypeNames()[0];
SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
if (featureSource instanceof SimpleFeatureStore) {
featureStore = (SimpleFeatureStore) featureSource;
featureStore.setTransaction(transaction);
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
示例6: collectionToShapeFile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
/**
* <p>
* The easy way to create a shapefile from attributes and geometries
* </p>
* <p>
* <b>NOTE: this doesn't support date attributes</b>
* </p>
*
* @param shapeFilePath the shapefile name
* @param crs the destination crs
* @param fet the featurecollection
* @throws IOException
*/
public static boolean collectionToShapeFile( String shapeFilePath, CoordinateReferenceSystem crs,
SimpleFeatureCollection fet ) throws IOException {
// Create the file you want to write to
File file = null;
if (shapeFilePath.toLowerCase().endsWith(".shp")) { //$NON-NLS-1$
file = new File(shapeFilePath);
} else {
file = new File(shapeFilePath + ".shp"); //$NON-NLS-1$
}
ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory();
Map<String, Serializable> create = new HashMap<String, Serializable>();
create.put("url", file.toURI().toURL());
ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create);
newDataStore.createSchema(fet.getSchema());
if (crs != null)
newDataStore.forceSchemaCRS(crs);
Transaction transaction = new DefaultTransaction();
SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource();
featureStore.setTransaction(transaction);
try {
featureStore.addFeatures(fet);
transaction.commit();
} catch (Exception problem) {
problem.printStackTrace();
transaction.rollback();
} finally {
transaction.close();
}
return true;
}
示例7: createShapeFileDatastore
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
/**
* @param name the shapefile name
* @param fieldsSpec to create other fields you can use a string like : <br>
* "geom:MultiLineString,FieldName:java.lang.Integer" <br>
* field name can not be over 10 characters use a ',' between each field <br>
* field types can be : java.lang.Integer, java.lang.Long, // java.lang.Double,
* java.lang.String or java.util.Date
* @return
* @throws Exception
*/
public static ShapefileDataStore createShapeFileDatastore( String name, String fieldsSpec, CoordinateReferenceSystem crs )
throws Exception {
// Create the file you want to write to
File file = null;
if (name.toLowerCase().endsWith(".shp")) {
file = new File(name);
} else {
file = new File(name + ".shp");
}
ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory();
Map<String, Serializable> create = new HashMap<String, Serializable>();
create.put("url", file.toURI().toURL());
ShapefileDataStore myData = (ShapefileDataStore) factory.createNewDataStore(create);
// Tell this shapefile what type of data it will store
// Shapefile handle only : Point, MultiPoint, MultiLineString,
// MultiPolygon
SimpleFeatureType featureType = DataUtilities.createType(name, fieldsSpec);
// Create the Shapefile (empty at this point)
myData.createSchema(featureType);
// Tell the DataStore what type of Coordinate Reference System (CRS)
// to use
myData.forceSchemaCRS(crs);
return myData;
}
示例8: makePointLayer
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
private void makePointLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs )
throws MalformedURLException, IOException {
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
String shapefileName = types[0].getShapefileName();
String typeName = types[0].getName();
b.setName(typeName);
b.setCRS(mapCrs);
b.add("the_geom", Point.class);
for( IEpanetType type : types ) {
b.add(type.getAttributeName(), type.getClazz());
}
SimpleFeatureType tanksType = b.buildFeatureType();
ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory();
File file = new File(baseFolder, shapefileName);
Map<String, Serializable> create = new HashMap<String, Serializable>();
create.put("url", file.toURI().toURL());
ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create);
newDataStore.createSchema(tanksType);
Transaction transaction = new DefaultTransaction();
SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource();
featureStore.setTransaction(transaction);
try {
featureStore.addFeatures(new DefaultFeatureCollection());
transaction.commit();
} catch (Exception problem) {
problem.printStackTrace();
transaction.rollback();
} finally {
transaction.close();
}
}
示例9: writeEsriShapefile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
static void writeEsriShapefile(Class<?> geomType, List<SimpleFeature> features, File file) throws IOException {
String geomName = geomType.getSimpleName();
String basename = file.getName();
if (basename.endsWith(FILE_EXTENSION_SHAPEFILE)) {
basename = basename.substring(0, basename.length() - 4);
}
File file1 = new File(file.getParentFile(), basename + "_" + geomName + FILE_EXTENSION_SHAPEFILE);
SimpleFeature simpleFeature = features.get(0);
SimpleFeatureType simpleFeatureType = changeGeometryType(simpleFeature.getType(), geomType);
ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory();
Map<String, Serializable> map = Collections.singletonMap("url", file1.toURI().toURL());
ShapefileDataStore dataStore = (ShapefileDataStore) factory.createNewDataStore(map);
dataStore.createSchema(simpleFeatureType);
String typeName = dataStore.getTypeNames()[0];
SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
DefaultTransaction transaction = new DefaultTransaction("X");
if (featureSource instanceof SimpleFeatureStore) {
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
SimpleFeatureCollection collection = new ListFeatureCollection(simpleFeatureType, features);
featureStore.setTransaction(transaction);
// I'm not sure why the next line is necessary (mp/20170627)
// Without it is not working, the wrong feature type is used for writing
// But it is not mentioned in the tutorials
dataStore.getEntry(featureSource.getName()).getState(transaction).setFeatureType(simpleFeatureType);
try {
featureStore.addFeatures(collection);
transaction.commit();
} catch (Exception problem) {
transaction.rollback();
throw new IOException(problem);
} finally {
transaction.close();
}
} else {
throw new IOException(typeName + " does not support read/write access");
}
}
示例10: write
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
public void write(SimpleFeatureCollection obj, OutputStream output, SimpleFeatureType sft,
String layerId) throws IOException {
File shpFile = File.createTempFile("shpFile", ".shp");
ShapefileDataStoreFactory fact = new ShapefileDataStoreFactory();
Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put(ShapefileDataStoreFactory.URLP.key, shpFile.toURI().toURL());
params.put(ShapefileDataStoreFactory.CREATE_SPATIAL_INDEX.key, Boolean.TRUE);
ShapefileDataStore shpDataStore = (ShapefileDataStore) fact.createNewDataStore(params);
shpDataStore.createSchema(sft);
SimpleFeatureStore store = (SimpleFeatureStore) shpDataStore.getFeatureSource(shpDataStore.getTypeNames()[0]);
Transaction transaction = new DefaultTransaction("create");
store.setTransaction(transaction);
store.addFeatures(obj);
transaction.commit();
ZipOutputStream os = new ZipOutputStream(output);
final String fileName = shpFile.getName().substring(0, shpFile.getName().lastIndexOf("."));
File[] shpFiles = new File(shpFile.getParent()).listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.contains(fileName);
}
});
for (File file : shpFiles) {
os.putNextEntry(new ZipEntry(layerId + file.getName().substring(file.getName().lastIndexOf("."))));
IOUtils.copy(new FileInputStream(file), os);
file.delete();
}
os.close();
output.flush();
}
示例11: preparePointFile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
public void preparePointFile(ArrayList<osmNode> osmNodes) throws IOException, SchemaException {
uniquePointTagKeys = getUniquePointTagKeys(osmNodes);
String passPointString = new String("location:Point:srid=4326,"+"id:Double");
for(String attribute:uniquePointTagKeys){
int colon;
do{
colon = attribute.indexOf(":");
if(colon!=-1){
attribute = attribute.substring(0, colon)+"_"+attribute.substring(colon+1);
}
}while(colon!=-1);
passPointString=passPointString+","+attribute+":String";
}
pointType = DataUtilities.createType("Location", passPointString);
pointCollection = FeatureCollections.newCollection();
pointBuilder = new SimpleFeatureBuilder(pointType);
pointFeature = pointBuilder.buildFeature(null);
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
Map <String,Serializable> parameters = new HashMap<String, Serializable>();
parameters.put("url",shpPointFile.toURI().toURL());
parameters.put("create spatial index",Boolean.TRUE);
ShapefileDataStore newdatastore = (ShapefileDataStore)dataStoreFactory.createNewDataStore(parameters);
newdatastore.createSchema(pointType);
newdatastore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
String typename = newdatastore.getTypeNames()[0];
SimpleFeatureSource simpfeatsource = newdatastore.getFeatureSource(typename);
pointFeatureStore = (SimpleFeatureStore)simpfeatsource;
}
示例12: prepareLineFile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
public void prepareLineFile(ArrayList<osmLine> osmLines) throws SchemaException, MalformedURLException, IOException {
uniqueLineTagKeys = getUniqueTagKeys(osmLines,"lines");
String passLineString = new String("location:LineString:srid=4326,"+"id:Double");
for(String attribute:uniqueLineTagKeys){
int colon;
do{
colon = attribute.indexOf(":");
if(colon!=-1){
attribute = attribute.substring(0, colon)+"_"+attribute.substring(colon+1);
}
}while(colon!=-1);
passLineString=passLineString+","+attribute+":String";
}
lineType = DataUtilities.createType("Location", passLineString);
lineCollection = FeatureCollections.newCollection();
lineBuilder = new SimpleFeatureBuilder(lineType);
lineFeature = lineBuilder.buildFeature(null);
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
Map <String,Serializable> parameters = new HashMap<String, Serializable>();
parameters.put("url",shpLineFile.toURI().toURL());
parameters.put("create spatial index",Boolean.TRUE);
ShapefileDataStore newdatastore = (ShapefileDataStore)dataStoreFactory.createNewDataStore(parameters);
newdatastore.createSchema(lineType);
newdatastore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
String typename = newdatastore.getTypeNames()[0];
SimpleFeatureSource simpfeatsource = newdatastore.getFeatureSource(typename);
lineFeatureStore = (SimpleFeatureStore)simpfeatsource;
}
示例13: zippedShapefileGet
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
/** @return Evenly spaced travel time contours (isochrones) as a zipped shapefile. */
@GET
@Produces("application/x-zip-compressed")
public Response zippedShapefileGet(@QueryParam("stream") @DefaultValue("true") boolean stream) throws Exception {
SimpleFeatureCollection contourFeatures = makeContourFeatures();
/* Output the staged features to Shapefile */
final File shapeDir = Files.createTempDir();
File shapeFile = new File(shapeDir, this.shpName + ".shp");
LOG.debug("writing out shapefile {}", shapeFile);
ShapefileDataStore outStore = new ShapefileDataStore(shapeFile.toURI().toURL());
outStore.createSchema(contourSchema);
/*
* "FeatureSource is used to read features, the subclass FeatureStore is used for read/write
* access. The way to tell if a File can be written to in GeoTools is to use an instanceof
* check.
*/
SimpleFeatureStore featureStore = (SimpleFeatureStore) outStore.getFeatureSource();
featureStore.addFeatures(contourFeatures);
// close?
shapeDir.deleteOnExit(); // Note: the order is important
for (File f : shapeDir.listFiles()) {
f.deleteOnExit();
}
/* Zip up the shapefile components */
StreamingOutput output = new DirectoryZipper(shapeDir);
if (stream) {
return Response.ok().entity(output).build();
} else {
File zipFile = new File(shapeDir, this.shpName + ".zip");
OutputStream fos = new FileOutputStream(zipFile);
output.write(fos);
zipFile.deleteOnExit();
return Response.ok().entity(zipFile).build();
}
}
示例14: build
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
public void build() throws IOException, ParseException
{
// Build the test shapefile
SimpleFeatureTypeBuilder schemaBuilder = new SimpleFeatureTypeBuilder();
schemaBuilder.setName("Flag");
schemaBuilder.setNamespaceURI("http://localhost/");
schemaBuilder.setCRS(DefaultGeographicCRS.WGS84);
// add attributes in order
this.addSchemaAttributes(schemaBuilder);
SimpleFeatureType schema = schemaBuilder.buildFeatureType();
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put("url", url);
params.put("create spatial index", Boolean.TRUE);
ShapefileDataStore store = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
store.createSchema(schema);
FeatureWriter<SimpleFeatureType, SimpleFeature> writer = store.getFeatureWriter(Transaction.AUTO_COMMIT);
try
{
for (int i = 0; i < 100; i++)
{
SimpleFeature feature = writer.next();
populateFeature(feature, i);
writer.write();
}
}
finally
{
writer.close();
}
}
示例15: mergeShapeFile
import org.geotools.data.shapefile.ShapefileDataStore; //导入方法依赖的package包/类
/**
*
* @param layer
* @param shpInput
* @param transform
* @return
* @throws Exception
*/
public static GeometryImage mergeShapeFile(SimpleFeatureCollection collectionsLayer, File shpInput,GeoTransform transform,Polygon bbox)throws Exception {
Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put("url", shpInput.toURI().toURL());
//create a DataStore object to connect to the physical source
DataStore dataStore = DataStoreFinder.getDataStore(params);
SimpleFeatureSource shape2 = (SimpleFeatureSource) dataStore.getFeatureSource(dataStore.getTypeNames()[0]);
SimpleFeatureCollection collectionsShape2=shape2.getFeatures();
SimpleFeatureType schemaShape2=shape2.getSchema();
ClipProcess clip=new ClipProcess();
SimpleFeatureCollection fc=clip.execute(collectionsShape2, bbox,true);
SimpleFeatureType schemaLayer=collectionsLayer.getSchema();
//merge the schema and the types
SimpleFeatureTypeBuilder stb = new SimpleFeatureTypeBuilder();
stb.setName("merged_geom");
stb.setCRS(schemaLayer.getCoordinateReferenceSystem());
stb.addAll(schemaShape2.getAttributeDescriptors());
stb.addAll(schemaLayer.getAttributeDescriptors());
SimpleFeatureType newFeatureType = stb.buildFeatureType();
//create new datastore to save the new shapefile
FileDataStoreFactorySpi factory = new ShapefileDataStoreFactory();
File tmp=new File(SumoPlatform.getApplication().getCachePath()+"\\tmpshape_"+System.currentTimeMillis()+".shp");
Map<String, Serializable> params2 = new HashMap<String, Serializable>();
params2.put("url", tmp.toURI().toURL());
ShapefileDataStore newds=(ShapefileDataStore)factory.createNewDataStore(params2);
GeometryImage out=null;
try{
newds.createSchema(newFeatureType);
//merge the feaures
SimpleFeatureStore mergeFeat=(SimpleFeatureStore)newds.getFeatureSource();
mergeFeat.addFeatures(collectionsLayer);
mergeFeat.addFeatures(fc);
//save the new shape file
exportToShapefile(newds, mergeFeat.getFeatures());//,newds.getSchema());
//from here create the new GeometricLayer
Collection<PropertyDescriptor>descriptorsMerge=new ArrayList<>();
descriptorsMerge.addAll(schemaShape2.getDescriptors());
descriptorsMerge.addAll(schemaLayer.getDescriptors());
String[] schema = createSchema(descriptorsMerge);
String[] types = createTypes(descriptorsMerge);
String geoName = schemaLayer.getGeometryDescriptor().getType().getName().toString();
out=GeometryImage.createLayerFromFeatures(geoName, newds, mergeFeat.getFeatures(), schema, types,true,transform);
//out = GeometricLayer.createImageProjectedLayer(out, transform,null);
out.setName("merge_"+shpInput.getName()+"_"+LayerManager.getIstanceManager().getCurrentImageLayer().getName());
}finally{
if(newds!=null)
newds.dispose();
}
return out;
}