如何使用 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);
}
这是我在 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);
}