有没有人能告诉我如何通过java geotools api获取特征的顶点?
在我的情况下,我在postgis中有一个多边形图层,我可以查询该图层的所有特征,我需要知道每个特征的顶点。
SimpleFeatureSource featureSource = pgDatastore.getFeatureSource("hb_thuadat");
Filter filter = CQL.toFilter("sothua = 10");
SimpleFeatureCollection collection = featureSource.getFeatures( filter );
System.out.print("tong so:"+ collection.size());
FeatureIterator iter=collection.features();
while( iter.hasNext() ){
Feature feature = iter.next();
System.out.println( feature.getIdentifier());
//how to get vertices of feature here???
}
任何帮助都很感激!谢谢!
答案 0 :(得分:5)
通过将feature
对象转换为SimpleFeature
类型,您应该能够提取如下的几何值:
SimpleFeature sp = DataUtilities.simple(feature);
Geometry geom = (Geometry) sp.getDefaultGeometry();
可以检索顶点,如下所示:
Coordinate[] array_of_coords = geom.getCoordinates();
System.out.println(array_of_coords[0].x);//X Coordinate
System.out.println(array_of_coords[0].y);//Y Coordinate
答案 1 :(得分:0)
我通过此代码找到解决方案
Feature feature = iter.next();
SimpleFeature sfeature = (SimpleFeature)feature;
Geometry g = (Geometry)sfeature.getAttribute("the_geom");
// System.out.print(g.getCoordinates().length);
Coordinate coor = g.getCoordinate();
System.out.println("x: " + coor.x);
System.out.println("y: " + coor.y);