2 votos

Leer un shapefile y escribir uno idéntico utilizando GeoTools

Utilizando GeoTools, ¿cómo debe leerse y escribirse un archivo shape de manera que sea lo más idéntico posible (idempotente) al archivo de entrada, es decir, que el esquema, la proyección y cualquier otro metadato no se modifiquen?

Mi objetivo final es leer un shapefile y aplicarle algunos cambios mínimos, pero esto parece un buen punto de partida.

No me interesa necesariamente un fragmento de código que funcione. Una lista de cosas a tener en cuenta al recrear un shapefile sería más que suficiente.

3voto

Mark H Puntos 2378

Esta es la solución para crear un shapefile idéntico al de entrada. Supongo que esto es correcto, pero no estoy 100% seguro.

File inFile = new File("in.shp");
File outFile = new File("out.shp");

// Read
DataStore inputDataStore = DataStoreFinder.getDataStore(
        Collections.singletonMap("url", inFile.toURI().toURL()));

String inputTypeName = inputDataStore.getTypeNames()[0];
SimpleFeatureType inputType = inputDataStore.getSchema(inputTypeName);

FeatureSource<SimpleFeatureType, SimpleFeature>
        source = inputDataStore.getFeatureSource(inputTypeName);

FeatureCollection<SimpleFeatureType, SimpleFeature>
        inputFeatureCollection = source.getFeatures();

// Write
ShapefileDataStoreFactory dataStoreFactory =
        new ShapefileDataStoreFactory();
ShapefileDataStore newDataStore =
        (ShapefileDataStore) dataStoreFactory.createNewDataStore(
        Collections.singletonMap("url", outFile.toURI().toURL()));

newDataStore.createSchema(inputType);
String typeName = newDataStore.getTypeNames()[0];

SimpleFeatureStore featureStore =
        (SimpleFeatureStore) newDataStore.getFeatureSource(typeName);

featureStore.addFeatures(inputFeatureCollection);

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X