首页 / 浏览问题 / WebGIS / 问题详情
iClient Openlayers空间查询复数数据集时的问题
277EXP 2025年09月03日
使用iClient for Openlayers对iServer11.1.1发布的数据服务进行空间查询时使用了ol.supermap.GetFeaturesByGeometryParameters

其中,数据集设置如下:datasetNames: [
            "datasource:datasetVector_line_01",
            "datasource:datasetVector_line_02",
            "datasource:datasetVector_point_01",
            "datasource:datasetVector_polygon_01"],
        geometry: polygonGeometry,
        toIndex: 9999,
        maxFeatures: 10000,
        spatialQueryMode: "INTERSECT"

其中line_01,02和point_01,polygon_01的坐标系都是一样的

然后在iClient里正常来说线段和点都有的位置绘制了一个geometry,使用这个geometry向iServer发送请求,

但目前能返回的只有线和面数据的结果,没看到点数据,请问

1.空间查询方式是否正确

2.返回的线和面数据似乎很难区分各自来自哪个数据集,请问是否有什么可以用来辨别的属性

3 个回答

您好,

空间查询构建的参数没有问题,没有查到点数据建议排查:

1.确保绘制的矩形内包含点;

2.尝试使用其他spatialQueryMode方式是否能查出点数据。

关于返回数据需要区分来自哪个数据集的问题,可通过以下方式实现:

返回的result对象中存在datasetInfos与features两个属性,datasetInfos中包含了数据集信息以及featureRange信息,featureRange表示该数据集的对象在features数组中的范围,可以通过这个范围截取相应的对象。
夏鑫
1
295EXP 2025年09月03日

1.确实包含了点,但查询不出结果

尝试过INTERSECT,CONTAIN和WITHIN

前两个查不出结果,WITHIN会返回error400,

  1. code: 400
  2. errorMsg: "The query object is not up to requirement, and it should be Point2D, Rectangle2D, Geometry, DatasetVector or Recordset."

2.感谢解答

您好,您的查询结果在前端渲染时是否设置了点符号风格?

1,366EXP 2025年09月03日
我是直接把查询结果显示到控制台上,里面没有搜出结果
只查询点图层能否查询到?是查询的问题,还是多图层一起查询没有结果
只查询点图层也无法查询到

确认过数据源名和数据集名,

现在准备用GetFeaturesBySQLParameters查询试试

到时确认是数据集的问题还是我描绘的geometry的问题
另一个功能里使用GetFeaturesBySQLParameters对目标点数据集进行查询可以正常得出并定位到结果位置
我在范例代码里使用相同的方式对范例数据集进行检索,可以同事检索出点和面

我看范例iserver是12.0.0,是不是iServer11.1.1版本的问题
目前换了iServer11.3.0进行测试,可以正常检索到结果了
...