这是我在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的四个边界,但不是包含多边形的点,是否可以这样做?
谢谢。
答案 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);
}