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

时间:2017-10-06 14:48:49

标签: java javafx shapefile geotools

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

我使用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的四个边界,但不是包含多边形的点,是否可以这样做?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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