如何使用 Oracle 空间 SQL 查询查找点或多边形是否在另一个多边形内
这是场景;
我有一个表(STATE_TABLE),其中包含一个空间类型(sdo_geometry),它是一个多边形(比如说一个州),我有另一个表(UNIVERSITY_TABLE),其中包含空间数据(sdo_geometry)(点/多边形),其中包含大学;
现在我如何使用 SQL 选择语句查找选定的大学是否处于给定状态。
首先,我想在地理围栏中定位给定对象的存在。
谢谢。
如何使用 Oracle 空间 SQL 查询查找点或多边形是否在另一个多边形内
这是场景;
我有一个表(STATE_TABLE),其中包含一个空间类型(sdo_geometry),它是一个多边形(比如说一个州),我有另一个表(UNIVERSITY_TABLE),其中包含空间数据(sdo_geometry)(点/多边形),其中包含大学;
现在我如何使用 SQL 选择语句查找选定的大学是否处于给定状态。
首先,我想在地理围栏中定位给定对象的存在。
谢谢。
您将需要使用带有“CONTAINS”掩码的 SDO_CONTAINS 或 SDO_RELATE
请参阅位于的文档
SDO_CONTAINS http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#sthref1064 _
或者
SDO_RELATE http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#i78531
其中任何一个您都可以执行以下操作(假设您的空间信息包含在空间索引的名为“GEOM”的列中):
select
ST.NAME, UT.UNIVERSITY_NAME
from
STATE_TABLE ST
INNER JOIN UNIVERSITY_TABLE UT
ON SDO_CONTAINS(ST.GEOM, UT.GEOM) = 'TRUE'
请原谅我,因为我不记得正确的语法,而且我不知道上面的连接是否能正常工作。不过,这应该足以为您指明正确的方向。