如何将Presto`ST_Distance`的结果转换为米?

时间:2017-11-24 11:53:23

标签: sql geospatial presto

我试图想出一种方法将presto geo空间函数ST_DISTANCE的结果转换为米。

如果我运行此示例查询:     SELECT ST_Distance(ST_Point(0.3476,32.5825),ST_Point(0.0512,32.4637))

我从Presto得到的结果是:0.3193217812802629。这两个地方之间的实际距离是40,000米。

presto文档说明ST_DISTANCE:Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units.

我对空间参考的理解是在以下链接:     http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=Defining_a_spatial_reference

这让我相信我需要找出Presto正在使用的空间参考。

如果我在这里查看perst文档:     https://github.com/prestodb/presto/blob/master/presto-geospatial/src/main/java/com/facebook/presto/geospatial/GeoFunctions.java

我猜可以使用ESRI库,所以我假设ESRI空间参考?但那是我在哪里继续前进的地方?

感谢您的帮助..

2 个答案:

答案 0 :(得分:1)

我建议使用Presto的great_circle_distance()函数而不是ST_Distance()。它会将您的坐标解释为WGS84(又名EPSG:4326),并通过将地球的形状视为球体来找到它们之间的距离(以公里为单位)。

如果正在使用的坐标系已投射到使用米或英里或其他单位的系统中,

ST_Distance()将是合适的,但在Presto中没有任何简单的方法可以做到这一点。

答案 1 :(得分:0)

通过查看文档,似乎presto支持几何类型,但不支持地理类型。这意味着它使用纬度和经度,这是我假设您作为这些点参数提供的。它只是一个任意的2D网格,因此得到的单位是你提供的任何单位输入。

两点之间的距离,以米为单位,两点均约为32.5米及以上。从起源和约0.5米左右"确实,从起源(presto将如何解释你的观点)是0.3193217812802629,这是给你的价值。