You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OSGeo或Shapely实现PostGIS EWKB几何的双向转换

使用OSGeo处理PostGIS几何的EWKB格式转换

针对你用PostGIS创建的SELECT 'POINT(1 2 3 2)'::geometry这个带M值的4D点,我来一步步演示怎么用OSGeo完成EWKB格式的读取和重新转换(实际场景里你可以在中间修改几何,这里只做格式转换演示):

首先,你需要导入必要的库,然后处理PostGIS返回的EWKB十六进制字符串,完整代码如下:

import binascii
from osgeo import ogr

# 假设这是PostGIS返回的完整EWKB十六进制字符串(补全你提供的片段)
ewkb_hex = '01010000C0000000000000F03F000000000000004000000000000008400000000000000040'

# 1. 将十六进制字符串解码为二进制数据
ewkb_bin = binascii.unhexlify(ewkb_hex)

# 2. 用OGR读取二进制EWKB,解析为几何对象
geom = ogr.CreateGeometryFromWkb(ewkb_bin)

# 这里可以添加几何修改逻辑,比如调整坐标值、修改几何类型等

# 3. 将几何重新导出为EWKB二进制数据,再转回十六进制字符串
new_ewkb_bin = geom.ExportToWkb(ogr.wkbExtended)
new_ewkb_hex = binascii.hexlify(new_ewkb_bin).decode('utf-8')

# 输出结果(如果没修改几何,会和原EWKB一致)
print(new_ewkb_hex)

关键细节说明:

  • binascii.unhexlify和hexlify负责十六进制与二进制的双向转换,这是因为PostGIS返回的EWKB通常以十六进制字符串形式传输
  • ogr.CreateGeometryFromWkb会自动识别EWKB的扩展格式(包括3D/4D坐标、空间参考信息等),无需额外配置
  • 导出时指定ogr.wkbExtended参数,确保输出的是兼容PostGIS的标准EWKB格式

内容的提问来源于stack exchange,提问作者Thilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:05:55