4

如何使用 Oracle 空间 SQL 查询查找点或多边形是否在另一个多边形内

这是场景;

我有一个表(STATE_TABLE),其中包含一个空间类型(sdo_geometry),它是一个多边形(比如说一个州),我有另一个表(UNIVERSITY_TABLE),其中包含空间数据(sdo_geometry)(点/多边形),其中包含大学;

现在我如何使用 SQL 选择语句查找选定的大学是否处于给定状态。

首先,我想在地理围栏中定位给定对象的存在。

谢谢。

4

1 回答 1

6

您将需要使用带有“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'

请原谅我,因为我不记得正确的语法,而且我不知道上面的连接是否能正常工作。不过,这应该足以为您指明正确的方向。

于 2011-01-05T06:09:52.780 回答