python - 在 postgis 中存储多边形和几何图形

标签 python postgresql geometry postgis blender

我几乎没有尝试通过 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

最佳答案

我不太确定 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 ))

关于python - 在 postgis 中存储多边形和几何图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315303/

相关文章:

geometry - 增强现实应用的空间几何

algorithm - 多边形的重心

python - 从 FTP 下载文件时出现多处理错误

sql - Access - row_number 函数?

java - 在 Spring Boot 的同一个 pom.xml 中管理 H2 和 Postgres

css - 在导航链接之后定位内联 block "Triangle"

Pythonic 检测一维观测数据中异常值的方法

python - NumPy 将函数应用于与另一个 numpy 数组对应的行组

python - 如何将装饰器中引发的异常传递给装饰函数?

postgresql - 在 azure postgres 中记录自定义消息