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?

questionAnswers(1)

yourAnswerToTheQuestion