如何使用 GeoTools 获取 shapeFile .shp 中多边形的所有点?

How I can get all the points of a polygon in a shapeFile .shp using GeoTools?

这是我在 Whosebug 中的第一个问题,所以我希望我是以正确的方式做的。

我正在使用 geotools 读取 shapeFile (.shp),但找不到获取多边形所有点的函数。到目前为止,我有以下代码:

public class ImportShapeFileService implements ImportShapeFileServiceInterface {

    @Override
    public void loadShapeFile(File shapeFile) throws MdfException {

        FileDataStore store;
        try {
            store = FileDataStoreFinder.getDataStore(shapeFile);
            SimpleFeatureSource featureSource = store.getFeatureSource();
            SimpleFeatureCollection collection = featureSource.getFeatures();

            ReferencedEnvelope env = collection.getBounds();
            double left = env.getMinX();
            double right = env.getMaxX();
            double top = env.getMaxY();
            double bottom = env.getMinY();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我正在获取 shapFile 的四个边界,但不是包含的多边形的点,是否可以这样做?

谢谢。

根据你想用积分做什么,我会做类似的事情:

try(SimpleFeatureIterator itr1 = features.features()){
  while(itr1.hasNext()){
     SimpleFeature f = itr1.next();
     Geometry g = (Geometry)f.getDefaultGeometry();
     Coordinate[] coords = g.getCoordinates();
     // do something with the coordinates
   }
}

如果你必须有 Point 而不仅仅是坐标(并且你确定你有多边形那么你可以使用:

  Geometry g = (Geometry)f.getDefaultGeometry();
  for(int i=0;i<g.getNumPoints();i++) {
    Point p=((Polygon)g).getExteriorRing().getPointN(i);
  }