4 votos

Reproyectar características con geotools

¿hay alguna manera de reproyectar una colección de características en una nueva con otro sistema de referencia de coordenadas? Estoy tratando de lograr esto mediante el reproyector de geotools:

SimpleFeatureSource featureSource = ...
SimpleFeatureCollection sfc = new ReprojectingFeatureCollection(featureSource.getFeatures(),
    org.geotools.referencing.CRS.decode("EPSG:4326"));

sfc presenta el esquema de otro CRS pero su geometría es la misma antes de la reproyección. ¿Qué me falta? ¿Tengo que crear manualmente una nueva geometría con la CRS y coordenadas para cada geometría en featureSource o geotools ofrecen una forma más elegante y eficiente de hacerlo? Estoy usando la versión 17.2 de geotools.

4voto

Adam Ernst Puntos 6939

Este código me funciona:

public static void main(String[] args) throws IOException, NoSuchAuthorityCodeException, FactoryException {
     if(args.length==0) {
       System.err.println("usage: Reprojector shapefile.shp");
       System.exit(1);
     }
     FileDataStore ds = FileDataStoreFinder.getDataStore(new File(args[0]));
     SimpleFeatureCollection features = ds.getFeatureSource().getFeatures();
     try(SimpleFeatureIterator itr=features.features()){
       int count=0;
       while(itr.hasNext()&&count++<10) {
         System.out.println(((Geometry) itr.next().getDefaultGeometry()).getCentroid());
       }
     }
     System.out.println("");
     ReprojectingFeatureCollection rfc = new ReprojectingFeatureCollection(features, CRS.decode("epsg:3875"));
     try(SimpleFeatureIterator itr=rfc.features()){
       int count=0;
       while(itr.hasNext()&&count++<10) {
         System.out.println(((Geometry) itr.next().getDefaultGeometry()).getCentroid());
       }
     }
  }

dando esta salida:

POINT (-69.97420075028728 12.516935269076281)
POINT (66.00844744953935 33.836266910437075)

POINT (7865991.086526802 4801048.897930129)
POINT (4827402.208410819 25805775.61452194)

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