假设我有以下使用 Postgis 创建的几何图形:
SELECT 'POINT(1 2 3 2)'::geometry
我想读取 EWKB 表格,然后将其重新写回 EWKB(在现实世界的应用程序中,我会对几何图形进行一些更改,对于本示例,我们只是转换几何图形)
使用 osgeo 我可以执行以下操作:
import binascii
from osgeo import ogr
# The geometry as EWKB as it is returned by postgis:
s = '01010000C0000000000000F03F000000000000004000000000000008400000000000000040'
binary_string = binascii.unhexlify(s)
g = ogr.CreateGeometryFromWkb(binary_string)
print(g.ExportToIsoWkt())
print(binascii.hexlify(g.ExportToWkb()))
这产生:
POINT ZM (1 2 3 2)
b'0000000bb93ff0000000000000400000000000000040080000000000004000000000000000'
如您所见,几何形状与原始几何形状不同。我如何返回结果
export(g) == s
我也愿意接受使用 shapely 的解决方案,但是我的测试给出了 M 坐标的一些问题。