ler coordenadas do arquivo shp e calcular a distância
Eu quero calcular a distância mais próxima de um ponto para um arquivo shp (ports.shp) a partir de dados da Terra Natural.
Por exemplo, estou carregando os recursos do arquivo:
...
String filename = "10m_cultural/ne_10m_ports.shp";
...
public static void Calcs(String filename)
throws IOException, NoSuchAuthorityCodeException, FactoryException, TransformException {
HashMap<String, Object> params = new HashMap<>();
params.put("url", DataUtilities.fileToURL(new File(filename)));
DataStore ds = DataStoreFinder.getDataStore(params);
String name = ds.getTypeNames()[0];
SimpleFeatureSource source = ds.getFeatureSource(name);
SimpleFeatureCollection features = source.getFeatures();
}
Agora, um ponto, por exemplo, do qual quero calcular a distância é:
GeometryFactory gf = JTSFactoryFinder.getGeometryFactory();
Point p = gf.createPoint(new Coordinate(43, 18));
Eu sei que, para calcular a distância, farei:
CoordinateReferenceSystem crs = CRS.decode("EPSG:4326");
Point start = gf.createPoint(new Coordinate(43, 18));
Point dest = gf.createPoint(new Coordinate(?????));
GeodeticCalculator gc = new GeodeticCalculator(crs);
gc.setStartingPosition(JTS.toDirectPosition(start.getCoordinate(), crs));
gc.setDestinationPosition(JTS.toDirectPosition(dest.getCoordinate(), crs));
double distance = gc.getOrthodromicDistance();
mas não sei como encontrar as coordenadas do ponto de destino (o arquivo ports.shp):
Point dest = gf.createPoint(new Coordinate(?????));
Eu tenho ofeatures
de carregar o arquivo, mas ele não tem nenhumgetCoordinates()
método.
Além disso, como eu posso verports.shp
consiste em muitosPOINT
geometry.Do eu tenho que calcular de alguma forma cada ponto com o ponto de referência e, em seguida, selecione o mais próximo?