我有一个具有3个字段(id,纬度,经度)的表(地址),还有一个具有2个字段(id,坐标(类型= 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))
答案 0 :(得分:0)
(更正了我的答案,以便更紧密地匹配您的问题)
简单的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坐标转换为多边形的坐标。这是自动完成的。