oracle DB中具有纬度和经度的两点之间的距离
Distance between two Point with Latitude & Longitude in oracle DB
我需要通过 Pl SQL 查询计算两个位置之间的距离。我尝试了一些 Qry 但没有得到它。
为此我们在SQL中使用查询如下
SELECT ROUND(geography::Point(cast('19.2806118' as float),cast('72.8757395' as float) ,
4326).STDistance(geography::Point(cast('19.4482006' as float),
cast('72.7912511' as float), 4326))/1000,1) DIST
结果:20.6
为了在 ORACLE Db 中进行相同的计算,我在互联网上找到了如下解决方案
select sdo_geom.sdo_distance(sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array( 19.2806118,72.8757395)),sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1,
1),sdo_ordinate_array( 19.4482006,72.7912511)),1,'unit=KM') distance_km from dual
结果:10.9271..
请建议在我获得 MS 时给我 KM 结果的方法 SQL
Please suggest the method which will give me result in KM as I am getting MS SQL
交换参数顺序 19.2806118,72.8757395
到 72.8757395,19.2806118
select sdo_geom.sdo_distance(
sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array(72.8757395,19.2806118)),
sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1,1),
sdo_ordinate_array(72.7912511,19.4482006))
,1
,'unit=KM') distance_km
from dual;
产生与 SQL 完全相同的结果服务器:20.5657053685075
db<>fiddle demo Oracle
db<>fiddle demo SQL Server
或使用 sdo_point
:
SELECT sdo_geom.sdo_distance(
sdo_geometry(2001, 4326,
sdo_point_type(72.8757395, 19.2806118, NULL), NULL, NULL),
sdo_geometry(2001, 4326,
sdo_point_type(72.7912511, 19.4482006, NULL), NULL, NULL),
1, 'unit=KM') distance_in_m
from DUAL;
SQL 服务器:geography::Point ( Lat, Long, SRID )
我需要通过 Pl SQL 查询计算两个位置之间的距离。我尝试了一些 Qry 但没有得到它。
为此我们在SQL中使用查询如下
SELECT ROUND(geography::Point(cast('19.2806118' as float),cast('72.8757395' as float) ,
4326).STDistance(geography::Point(cast('19.4482006' as float),
cast('72.7912511' as float), 4326))/1000,1) DIST
结果:20.6
为了在 ORACLE Db 中进行相同的计算,我在互联网上找到了如下解决方案
select sdo_geom.sdo_distance(sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array( 19.2806118,72.8757395)),sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1,
1),sdo_ordinate_array( 19.4482006,72.7912511)),1,'unit=KM') distance_km from dual
结果:10.9271..
请建议在我获得 MS 时给我 KM 结果的方法 SQL
Please suggest the method which will give me result in KM as I am getting MS SQL
交换参数顺序 19.2806118,72.8757395
到 72.8757395,19.2806118
select sdo_geom.sdo_distance(
sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array(72.8757395,19.2806118)),
sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1,1),
sdo_ordinate_array(72.7912511,19.4482006))
,1
,'unit=KM') distance_km
from dual;
产生与 SQL 完全相同的结果服务器:20.5657053685075
db<>fiddle demo Oracle
db<>fiddle demo SQL Server
或使用 sdo_point
:
SELECT sdo_geom.sdo_distance(
sdo_geometry(2001, 4326,
sdo_point_type(72.8757395, 19.2806118, NULL), NULL, NULL),
sdo_geometry(2001, 4326,
sdo_point_type(72.7912511, 19.4482006, NULL), NULL, NULL),
1, 'unit=KM') distance_in_m
from DUAL;
SQL 服务器:geography::Point ( Lat, Long, SRID )