oracle spatial sdo_nn函数的问题

时间:2013-03-05 07:13:37

标签: oracle spatial

SELECT P.ID, P.LOC,P.GEOM.GET_WKT() WKT FROM MY_TEST P;

id     loc          wkt
----------------------------------------------
1   thalassery  POINT (75.489292 11.753003)
2   pilakool    POINT (75.495129 11.743255)
3   gopalapet   POINT (75.502338 11.736532)
4   mahe        POINT (75.536327 11.700562)
5   vadakara    POINT (75.598297 11.621928)
6   kannur      POINT (75.38475 11.873712)

 SELECT
     C.LOC loc1, 
     D.LOC loc2,
     SDO_GEOM.SDO_DISTANCE(C.GEOM, D.GEOM, .005,'unit=km') AS SDO_DISTANCE
FROM MY_TEST C,
     MY_TEST D
ORDER BY 1, 2;  --which results 18.7476695068002 as the distance between id 1 and id 5

enter image description here

但是我使用sdo_nn函数获得了不同的输出:

SELECT 
     C.LOC,
     D.LOC,
     SDO_NN_DISTANCE(1) AS SDO_NN_DISTANCE
FROM MY_TEST C,
     MY_TEST D
WHERE 
 sdo_nn(c.geom, d.geom,1)='TRUE'-- getting only 0 result sets on using 'UNIT=KM' parameter.
ORDER BY 1,2;

enter image description here

感谢任何人:)

1 个答案:

答案 0 :(得分:0)

您必须指定单位'UNIT = KM':

SELECT 
     C.LOC,
     D.LOC,
     SDO_NN_DISTANCE(1) AS SDO_NN_DISTANCE
FROM MY_TEST C,
     MY_TEST D
WHERE 
 sdo_nn(c.geom, d.geom,'UNIT=KM',1)='TRUE'
ORDER BY 1,2;