【问题标题】:Why is AWS Athena Binary Format for Geospatial Data Different From PostGIS?为什么地理空间数据的 AWS Athena 二进制格式与 PostGIS 不同?
【发布时间】:2020-11-02 16:37:51
【问题描述】:

我正在尝试将一些代码从 Postgres/PostGIS 转换为 AWS Athena。现有代码使用 WKB 来表示地理空间数据,所以我想继续使用它。但是,AWS Athena 的二进制格式似乎与 Postgres/PostGIS 不同:

  • Postgres/PostGIS:SELECT ENCODE(ST_POINT(-82.9988, 39.9612), 'hex') 返回 0101000000abcfd556ecbf54c02575029a08fb4340,这是预期的 WKB。
  • AWS Athena:SELECT TO_HEX(ST_POINT(-82.9988, 39.9612)) 返回 000000000101000000ABCFD556ECBF54C02575029A08FB4340,除了四个前导零字节之外,它是相同的。

这四个前导零字节是什么? AWS Athena 的地理空间数据的二进制表示是否不同,即我应该在插入之前添加四个零字节?还是我遗漏了什么?

【问题讨论】:

  • 前四字节好像是SRID。我现在需要一些机制来转换我的数据以包含我想的这个。

标签: gis geospatial postgis presto amazon-athena


【解决方案1】:

我会采用“安全”的方式,在 Postgres 中通过 ST_AsText() 将列转换为 WKT,然后将其传输到 Athena,然后通过 ST_GEOMETRY_FROM_TEXT 将其转换回几何。

【讨论】:

  • 从技术上讲,这不是问题的答案,但这就是我最终要做的。
  • 我过去曾遇到过从 WKB -> WKT -> WKB 往返导致无效几何图形的问题
【解决方案2】:

你试过ST_AsHexEWKB()吗?

SELECT ST_AsHexEWKB(ST_SetSRID(ST_POINT(-82.9988, 39.9612), 4326));
                    st_ashexewkb
----------------------------------------------------
 0101000020E6100000ABCFD556ECBF54C02575029A08FB4340

【讨论】:

  • 很遗憾,ST_AsHexEWKB() 目前还不是 AWS Athena 上的注册函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多