首页 / 浏览问题 / 三维GIS / 问题详情
iserver 数据服务post 空间查询
67EXP 2023年07月04日
空间查询传参可以是多个polygon吗

2 个回答

您好!传入的查询对象必须是单个的geometry,不能是多个;但是可以将多个 polygon合并为一个再查询。我这里以leaflet为例,使用truf合并polygon做几何查询。具体可以参考代码:

        // 创建包含多个Polygon的LayerGroup
        var polygonGroup = L.layerGroup().addTo(map)
        var polygon = L.polygon(
          [
            [0, 0],
            [-30, 0],
            [-10, 30],
            [0, 0]
          ],
          { color: 'red' }
        ).addTo(polygonGroup)
        var polygon1 = L.polygon(
          [
            [0, 0],
            [30, 0],
            [10, 30],
            [0, 0]
          ],
          { color: 'blue' }
        ).addTo(polygonGroup)
        // 使用Turf.js合并多个Polygon为一个MultiPolygon
        var polygonFeatures = polygonGroup.toGeoJSON().features
        var unionFeature = turf.union(...polygonFeatures)
        var geometryParam = new L.supermap.GetFeaturesByGeometryParameters({
          datasetNames: ['World:Countries'],
          geometry: unionFeature,
          spatialQueryMode: 'INTERSECT'
        })
        new L.supermap.FeatureService(url).getFeaturesByGeometry(geometryParam, function (serviceResult) {
          resultLayer = L.geoJSON(serviceResult.result.features, {
            onEachFeature: function (feature, layer) {
              layer.bindPopup('country' + ':' + feature.properties.COUNTRY)
            }
          }).addTo(map)
        })

希望可以帮助到您!

1,427EXP 2023年07月04日

您好,iServer数据服务中的空间查询只能传一个geometry对象。

446EXP 2023年07月04日
...