esri函数ST_Distance返回距离的测量单位是多少?以及如何以米/公里为单位

时间:2017-08-23 14:48:00

标签: geospatial spatial hadoop2 esri

我正在使用

CREATE TEMPORARY FUNCTION ST_Distance
  AS 'com.esri.hadoop.hive.ST_Distance';

SELECT ST_Distance(st_geomfromtext((GEOMETRY_STR)),(st_point(17.3864612476915,78.4119865215241))) as dist
FROM routeDF
WHERE ID = 'NH04';

distance.show返回“0.005588125384800691”。我不确定这个值是多少,我需要这个公里或米。

2 个答案:

答案 0 :(得分:1)

输出单位与带有ST_Distance的输入单位相同 - 例如,以米为单位的米数或以度数表示的度数。 您可能有兴趣将ST_GeodesicLengthWGS84与临时双顶点线串一起使用。 [披露:合作者]

答案 1 :(得分:0)

我有相同的问题。因此开始挖掘... from herereached here

看起来像是距离计算公式!

  Highcharts.chart('container', {
    xAxis: {
     categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 
     'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    legend: {
     itemHoverStyle: {
        color: 'red',
     }
    },
    series: [{
     data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 
      216.4, 194.1, 95.6, 54.4]
    }]});

返回结果前必须先执行sqrt。我在AWS Athena / Presto中运行了以下命令-

public static double sqrDistance(Point2D pt1, Point2D pt2) {
    double dx = pt1.x - pt2.x;
    double dy = pt1.y - pt2.y;
    return dx * dx + dy * dy;
}

看起来像答案一样!

The answer to the conversion Qs. is here,即要进入公里,您需要...

ST_DISTANCE(ST_POINT(48.64703, -122.26324), ST_POINT(48.6721, -122.265)) = 0.025131703085942852

sqrt((48.64703-48.6721)^2 + (-122.26324+122.265)^2) = 0.02513170309

我需要以米为单位的距离,我做了一个小测试,看转换是否接近,结果证明非常接近m。小数点后不同。您需要将经纬度作为数组显示出来才能看到结果。

ST_DISTANCE(...) * 6371 * Sqrt[dx^2 + dy^2]] * pi / 180

我的结果如下:

import math
from haversine import haversine
test = [
[lat,lon,lat,lon],
...
[lat,lon,lat,lon]
]

for x in test:
  dist = math.hypot(x[2] - x[0], x[3] - x[1]) * 6371000*math.pi/180
  hv = haversine(x[0:2],x[2:4])*1000
  print('eucledian: %0.3f' %  dist, '\thaversine: %0.3f ' % hv, '\toffset: %0.3f' % (hv - dist),'m')