我有一个表(地址)有3个字段(id,纬度,经度)和其他表(多边形)有2个字段(id,coordinates(type = mdsys.sdo_geometry))。我的问题是,我如何关联坐标以了解地址是否在多边形区域内
地址
id ---------- 1
latitude ---- 36.13948149
longitude --- -86.84178303
多边形
id ---------- 15
MDSYS.SDO_GEOMETRY(2003,1041002,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(13650333.621154,5324021.16148257,13650233.7612594,5324171.58351056,13650028.4381112))
(更正了我的答案以更贴近您的问题)
一个简单的SELECT将做你想要的:
select p.id, ...
from polygons p, address a
where a.id = 1
and sdo_contains (p.coordinates, sdo_geometry(2001,4326,sdo_point_type(a.longitude,a.latitude,null),null,null)) = 'TRUE';
这将返回表格中包含所选地址点的所有多边形。请注意,无需将GPS坐标转换为多边形的坐标。这是自动完成的。