如何将Presto中的`ST_Distance`函数计算结果转换为米?

7
我正在尝试找到一种方法将 Presto 地理空间函数 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:返回投影单位中两个几何图形之间的二维笛卡尔最小距离(基于空间参考)。我可以理解空间参考的内容,例如以下链接: http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=Defining_a_spatial_reference 这使我相信我需要找出 Presto 正在使用的空间参考。
如果我在这里检查prest文档: https://github.com/prestodb/presto/blob/master/presto-geospatial/src/main/java/com/facebook/presto/geospatial/GeoFunctions.java 我可以猜测它正在使用ESRI库,所以我假设ESRI空间参考?但是我有点不知道该如何继续? 谢谢你的帮助。
2个回答

4
我建议使用Presto的great_circle_distance()函数代替ST_Distance()。它将把你的坐标解释为WGS84(又称EPSG:4326),并假设地球是一个球体,以公里为单位计算它们之间的距离。
如果已经将坐标系投影到使用米或英里等其他单位的系统中,则可以使用ST_Distance(),但在Presto中没有简单的方法来执行此操作。

0
从文档上看,presto支持几何类型但不支持地理类型。这意味着它不能使用纬度和经度,而这正是我假设您提供的点参数。它只是一个任意的二维网格,因此结果单位是您提供的任意单位。
两个点之间的距离(以米为单位),这两个点都大约在原点上方32.5米,左侧约0.5米(presto将如何解释您的点),确实是0.3193217812802629,这就是返回给您的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接