【问题标题】:Polygon vertices to lat/lon in python using psycopg2使用psycopg2在python中将多边形顶点转换为纬度/经度
【发布时间】:2016-12-11 21:50:50
【问题描述】:

我正在尝试使用psychopg2 获取多面体的所有顶点的点以下代码成功执行...

cur = conn.cursor()
cur.execute("""SELECT ST_DumpPoints(ST_AsText(geom)) from dry_overlay""")


rows = cur.fetchall()
print "\nShow me the databases:\n"
for row in rows:
    print "   ", row[0]

但它会产生如下所示的输出:

("{1,1,1}",0101000000F3071C3FF0E04241C729FC3E2C735A41)
("{1,1,2}",01010000009C700A93FFDF4241DA0BBD6283725A41)
("{1,1,3}",01010000001BC9122701E04241C2D848ED2C735A41)
("{1,1,4}",0101000000325487970FE04241FF279CE92C735A41)
("{1,1,5}",0101000000B188A3F06FE042414A73142B2C735A41)
("{1,1,6}",0101000000F3071C3FF0E04241C729FC3E2C735A41)
("{1,1,1}",010100000019D5589E634D4341B7E69817C2875A41)
("{1,1,2}",010100000042AEF52E2E4D43418CD52A53C1875A41)
("{1,1,3}",01010000006D4CBA551F4D43411EBEF35CC1875A41)
("{1,1,4}",0101000000D92F2F601F4D43413AD9BADAB9875A41)
("{1,1,5}",0101000000AF1860920F4D43410E00CDDBB9875A41)

我知道第二个元素是 WKT,但如何将其转换为纬度/经度坐标?我以为ST_AsText() 会执行此功能

【问题讨论】:

    标签: python postgis psycopg2


    【解决方案1】:

    您可以使用出色的shapely 包中的wkb 模块来加载和操作几何图形:

    from shapely import geometry, wkb
    
    test_geom = geometry.Point(0, 0)
    test_wkb_hex = wkb.dumps(test_geom, hex=True)
    
    print(test_wkb_hex) # prints: '010100000000000000000000000000000000000000'
    
    my_geom = wkb.loads(test_wkb_hex, hex=True)
    
    print(my_geom) # prints: POINT (0 0)
    

    在您的情况下,只需在您的回复中使用wkb.loads(record_geom, hex=True) 方法。

    然后您可以使用shapelygeometry 模块来提取您的顶点或执行任何其他数量的任务。

    例如,my_geom.coords.xy 将返回您的坐标的xy 数组。

    【讨论】:

    • 谢谢!这在服务器上相当快。
    【解决方案2】:

    是的,ST_AsText 是你需要的函数,但在另一个地方:

    SELECT ST_Astext((ST_DumpPoints(geom)).geom) from dry_overlay;
    

    最好使用 ST_X 和 ST_Y,这样您就不必解析文本:

    SELECT ST_x(geom), ST_y(geom) FROM (
        SELECT (St_DumpPoints(geom)).geom from dry_overlay
      ) as foo;
    

    【讨论】:

      【解决方案3】:

      PPyGIS函数ppygis.Geometry.read_ewkb(...)可以帮助你。

      【讨论】:

        猜你喜欢
        • 2021-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-01
        • 2013-09-09
        • 2021-09-24
        相关资源
        最近更新 更多