首页 / 浏览问题 / 组件GIS / 问题详情
三维点数据集查询
10EXP 2023年09月12日
使用产品:iserver 10.2.1 操作系统 win10 64

问题描述:

我有一个三维点数据集数据量在千万级别,另外有一个二维面数据集。每个region面有一定的业务属性:高度。

请问如何能快速 从 三维点数据集中 查询出 处于这个region体内的 相关点,谢谢

1个回答

您好,您确定下您的业务需求呢。

是真的要查询纯二维面空间内有的三维点吗,如果是的话,那先对三维点进行一个z高度查询,只查出高度值为0的点,

因为二维面的高度就是0,然后使用这些高度值为0的点转为二维点,和二维面做空间查询就行。

如果您要查询的是,二维面投影范围内,一定高度(立体盒状体)范围内的所有三维点,那建议您确定面的底部高程,拉伸高度两个数值,

将面数据添加到三维场景中,使用规则建模中的线性拉伸功能,选择面的底部高程字段属性和拉伸高度字段属性,

将二维面数据拉伸建模成模型体数据作为查询范围,使用三维点和模型数据,进行空间查询或布尔运算即可得到。

希望可以帮助到您。
10,513EXP 2023年09月12日

请问针对一个三维点的数据集 ,我采用 一个 二维的多边形 去查询  GeoRegion

Recordset building3DRecordset = datasetVector3D.query(geoRegion, 0, CursorType.STATIC);

也就是这个方法:

public Recordset query(Geometry geometry, double bufferDistance, CursorType cursorType) {}

得出的结果会命中 所有x,y处于 多边形内的 点集合吗【忽略z坐标】?

因为我现在debug看到 得出的结果集里 似乎有z坐标不是0的数据,所以想要确认一下

这样查询的结果会是所有xy出于多边形范围内的数据,至于您说的坐标含有0,

我看您的描述中,并没有做筛选坐标是0的筛选环节啊。

上面回答中说的两种情况,一个是查询所有落在二维平面内的三维点,一个是查询所有落在二维面及面上下空间空间范围内的点,查询的一个是面内所有点,一个是体内所有点。

如果想用第一种方法查询体内点也是可以的,

将三维点转为二维点,使用SQL查询,先将属性表Z点的高度符合需求的数据查出来,如何对结果使用二维面进行空间查询即可。
...