【问题标题】:store polygons and geometry in postgis在 postgis 中存储多边形和几何图形
【发布时间】:2014-02-14 10:07:33
【问题描述】:

我几乎没有尝试通过 Python 将数据或多边形从 Blender 提取到 PostGIS。一开始我用一个简单的立方体来尝试所有这些东西。 我根本想在 PostGIS 中获得一个纯 POLYGON - GEOMETRY-Type,它看起来像 多边形((x1 y1 z1,x2 y2 z2,.....)) 我可以通过这种方式从 Blender 中读取信息:

向量:

verts=[ 
<Vector (1.0000, 1.0000, -1.0000)> ,
<Vector (1.0000, -1.0000, -1.0000)> ,
<Vector (-1.0000, -1.0000, -1.0000)> ,
<Vector (-1.0000, 1.0000, -1.0000)> ,
<Vector (1.0000, 1.0000, 1.0000)> ,
<Vector (1.0000, -1.0000, 1.0000)> ,
<Vector (-1.0000, -1.0000, 1.0000)> ,
<Vector (-1.0000, 1.0000, 1.0000)> ,
 ]

和面(数字是形成多边形的顶点):

faces = [
(0, 1, 2, 3)
(4, 7, 6, 5)
(0, 4, 5, 1)
(1, 5, 6, 2)
(2, 6, 7, 3)
(4, 0, 3, 7)
]

现在我不知道如何将这些信息放入 POLYGON-GEOMETRY 结构中以将其存储在 PostgreSQL/PostGIS 中。

最后,我希望立方体的每个面都有一个 POLYGON((...)) 。我想对 Blender 中更复杂的 3D 模型执行此操作。使用 POLYGON- 或 TIN-GEOMETRY.... 但首先我需要知道如何使用 Python 与几何图形进行交互。

我希望你能让我更进一步。我很感谢任何提示。 谢谢! J

【问题讨论】:

    标签: python postgresql geometry postgis blender


    【解决方案1】:

    我不太确定 Blender 的内部对象模型,所以我为此创建了一些虚拟数据。但我认为最终结果应该接近您正在寻找的结果:

    verts = [[1.0,-1.0,0.0]]*8
    faces = [
        (0, 1, 2, 3),
        (4, 7, 6, 5),
        (0, 4, 5, 1),
        (1, 5, 6, 2),
        (2, 6, 7, 3),
        (4, 0, 3, 7),
    ]
    
    # ---------------------------------------------
    # PostGIS POLYGON data formatting happens next
    
    for f in faces:
        print("POLYGON((", end="")
        for point in f:
            v = verts[point]
            print("{} {} {} ".format(v[0], v[1], v[2]), end="")
        print("))")
    
    # Will print....
    
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    # POLYGON((1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 1.0 -1.0 0.0 ))
    

    【讨论】:

    • 感谢您的回答!!我检查了它,它看起来真的有点像我想要的东西,但它只是看起来像。我完全想知道这种几何格式的 POLYGON 或 TIN 在 postgis 中是如何工作的?我想调用 POLYGON/TIN 的 EWKT 代码。我怎样才能以正确的方式写入它......!?我会再试一点,但你的回答对我有帮助,很好的代码!谢谢... :)
    • 实际上我希望这样的东西写在多边形的几何中: GeomFromEWKT('POLYGON((x1 y1 z1, x2 y2 z2,....))'3004) 但是如何制作循环所有点,无论多少,都将存储在一个多边形几何中?谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 2013-01-02
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2020-09-29
    相关资源
    最近更新 更多