【发布时间】:2021-02-02 09:51:55
【问题描述】:
是否有可能直接将 HERE 灵活折线写入我的 Postgis/Postgres 数据库,无需解码、转换为文本,然后使用 ST_MakeLine(ST_MakePoint(...) 制作几何?我恐怕没有可能(除了谷歌编码的折线)。或者有什么可以使用的吗?
背景:我正在测试用于路由的 HERE-API。我找到了从 Github 解码生成的折线的 Java 源代码:https://github.com/heremaps/flexible-polyline。因此我可以从这个 flexxible-polyline-String 读取坐标
- 柔性折线:
BG8_9j7Cy11iXsBlBoBrEnBrErJrJzF3DnGvC7GnBvHoBjNkI7BrE7GvR7BjDrEvH_E3I_EvHvCrE3SnajNrTjIjNvHjN7G_OvHjSnGnQ_EzP_E_TrEnVrErYjDvWrEvgB7BnLjD_TvCjXjDvgB5D9qB - 这导致坐标:(47.774718 / 12.102489) (47.77474 / 12.10247) (47.77476 / 12.1024) (47.77474 / 12.10233) ....(在德国南部)
- 或作为 Postgis 请求:
ST_GeomFromText('LINESTRING(12.102489 47.774718, 12.10247 47.77474, 12.1024 47.77476, 12.10233...
我的要求是:
但现在我想将此点列表转换为 Postgis。我希望使用现有的功能,例如ST_LineFromEncodedPolyline 来自 Postgis。不幸的是,这不会返回有效结果,因为它基于 Google 编码/解码算法。 ST_LineFromEncodedPolyline 的结果是(清楚地表明这些折线压缩之间存在巨大差异):
SELECT ST_AsEWKT(ST_LineFromEncodedPolyline('BG8_9j7Cy11iXsBlBoBrEnBrErJr.....
--Result:
SRID=4326;LINESTRING(0.00004 -0.00002,0.0042 -0.00015,0.00422 -0.00405,0.00431 -0.00104,0.0048 ...
有什么办法吗?使用乘数从 HERE-String 中获取此几何?
【问题讨论】:
-
似乎没有答案......而且可能真的不起作用。没关系 - 我刚刚通过创建一个 LatLong-String 并制作一个 LINESTRING 并将其写入 Postgis 来完成编程。