我需要在我的项目中使用 IBM Informix,我有点坐标,我需要找到查询矩形区域中存在哪些点。
Informix 具有带有 ST_POINT 和 ST_POLYGON 数据对象的空间数据刀片模块。我知道如何在具有此类对象的表上创建、插入和创建 r-tree 索引。
但问题是如何执行 SELECT 语句,该语句列出特定矩形区域中的所有点。
您触手可及的 Spatial Datablade 文档?它可在IDS 11.50 信息中心获得。
例如,第 1 章中的部分讨论了执行空间查询:
执行空间查询
GIS 应用程序中的一项常见任务是检索空间数据的可见子集以在窗口中显示。最简单的方法是定义一个表示窗口边界的多边形,然后使用 SE_EnvelopesIntersect() 函数查找与该窗口重叠的所有空间对象:
SELECT name, type, zone FROM sensitive_areas
WHERE SE_EnvelopesIntersect(zone,
ST_PolyFromText('polygon((20000 20000,60000 20000,60000 60000,20000 60000,20000 20000))', 5));
查询也可以使用 SQL WHERE 子句中的空间列来限定结果集;空间列根本不需要在结果集中。例如,如果敏感区域位于危险场地 5 英里范围内,则以下 SQL 语句将检索每个敏感区域及其附近的危险废物场地。ST_Buffer() 函数生成一个圆形多边形,表示每个危险位置周围 5 英里的半径。ST_Buffer() 函数返回的 ST_Polygon 几何成为 ST_Overlaps() 函数的参数,如果敏感区域表的区域 ST_Polygon 与 ST_Buffer() 函数生成的 ST_Polygon 重叠,则返回 t (TRUE):
SELECT sa.name sensitive_area, hs.name hazardous_site
FROM sensitive_areas sa, hazardous_sites hs
WHERE ST_Overlaps(sa.zone, ST_Buffer(hs.location, 26400));
sensitive_area Summerhill Elementary School
hazardous_site Landmark Industrial
sensitive_area Johnson County Hospital
hazardous_site Landmark Industrial