leer las coordenadas del archivo shp y calcular la distancia

Quiero calcular la distancia más cercana desde un punto a un archivo shp (ports.shp) a partir de datos naturales de la tierra.

Por ejemplo, estoy cargando las características del archivo:

...
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();

}

Ahora, un punto, por ejemplo, desde el cual quiero calcular la distancia es:

GeometryFactory gf = JTSFactoryFinder.getGeometryFactory();
Point p = gf.createPoint(new Coordinate(43, 18));

Sé que para calcular la distancia que haré:

     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();

pero no sé cómo encontrar las coordenadas del punto de destino (el archivo ports.shp):

Point dest = gf.createPoint(new Coordinate(?????));

Tengofeatures de cargar el archivo pero no tiene ningunagetCoordinates() método.

Además, como puedo verports.shp consiste en muchosPOINT geometría. ¿Tengo que calcular de alguna manera cada punto con el punto de referencia y luego seleccionar el más cercano?

Respuestas a la pregunta(1)

Su respuesta a la pregunta