oracle spatial sdo_nn函数存在问题
但我在使用sdo_nn函数时得到了不同的输出,如下所示:oracle spatial sdo_nn函数存在问题,oracle,spatial,Oracle,Spatial,但我在使用sdo_nn函数时得到了不同的输出,如下所示: 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 g
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
感谢您的帮助:您必须指定单位“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,1)='TRUE'-- getting only 0 result sets on using 'UNIT=KM' parameter.
ORDER BY 1,2;
您得到的输出不同,因为SDO_NN_DISTANCE使用米,而您对SDO_GEOM.SDO_DISTANCE的调用使用公里数。@卢克·伍德沃德,谢谢,您是对的,但如何将其转换/显示为所需的参数,例如“unit=km”,如果我使用该参数,则在该字段中返回0。对于给定的高亮显示值,结果应在18.747左右…如果要将以米为单位的值转换为以公里为单位的值,请除以1000。如果您使用的是其他单位,您必须自己进行转换。
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;