如何在geotools中获取要素的顶点

时间:2013-10-25 06:54:34

标签: geotools

有没有人能告诉我如何通过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???
        }

任何帮助都很感激!谢谢!

2 个答案:

答案 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);