如何将经纬度(字符串)转换为坐标

时间:2019-03-25 13:58:55

标签: oracle coordinates spatial oracle-spatial

我有一个具有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))

1 个答案:

答案 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坐标转换为多边形的坐标。这是自动完成的。