如何在网格和多边形之间与岩土工具进行空间连接



我有一个gridcoverage2d和一个多点的集合,因此不会重叠的多边形。两者都覆盖了相同的地理区域,我想知道每个点所在的哪个多边形。因此,这是一个问题。

使用Geotools做到这一点的天真方法是在所有700000点上迭代,并要求每260次,如果它位于多边形中。这有效,但很慢。...

在Geotools中有更快的方法吗?

在R中做类似的操作(使用" Over"功能(,需要几秒钟,而我的天真的嵌套环将需要数小时才能运行。因为它进行了700000倍的100次通话

while(pointFeatures.hasNext())  {
        SimpleFeature pointFeature = pointFeatures.next();
        Geometry   defaultGeometryPoint = (Geometry) pointFeature.getDefaultGeometry();
        PreparedGeometry prep = PreparedGeometryFactory.prepare( defaultGeometryPoint );
        SimpleFeatureIterator polygonFeatures = collection.features();
        while(polygonFeatures.hasNext()) {
            SimpleFeature polygonFeature = polygonFeatures.next();
            Geometry polygonFeatureDefaultGeometry = (Geometry) polygonFeature.getDefaultGeometry();
            if(prep.within(polygonFeatureDefaultGeometry)) {
                System.out.println("polygonFeature = " + polygonFeature);
                break;
            }
        }
    }

我会做这样的事情:

for each polygon:
    get bounding box
    for x in bbox.minx,bbox.maxx
       for y in bbox.miny,bbox.maxy
           if check ig point(x,y) is in polygon is True
               note point in poly.

,但是如果您有实际点而不是网格,那会更快。

最新更新