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