【问题标题】:How to get vertices of feature in geotools如何在geotools中获取要素的顶点
【发布时间】:2013-10-25 06:54:34
【问题描述】:

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

感谢您的帮助!谢谢!

【问题讨论】:

    标签: geotools


    【解决方案1】:

    通过将您的 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

    【讨论】:

      【解决方案2】:

      我自己通过这段代码找到了解决方案

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

      【讨论】:

        猜你喜欢
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-15
        相关资源
        最近更新 更多