我试图想出一种方法将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空间参考?但那是我在哪里继续前进的地方?
感谢您的帮助..
答案 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,这是给你的价值。