2014-01-23 31 views
1

我几乎不想通过Python将Blender中的多边形数据提取到PostGIS。一开始,我正在用一个简单的多维数据集尝试所有这些东西。我可以用这种方式从Blender读取信息:在postgis中存储多边形和几何

我想获得一个纯粹的POLYGON - GEOMETRY类型的PostGIS,看起来像 POLYGON((x1 y1 z1,x2 y2 z2,.....))

的载体:

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

回答

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)) 
+0

感谢您的回答!我检查了它,它确实有点像我想要的东西,但它看起来像。我想知道这个几何格式的POLYGON或TIN在postgis中是如何工作的?我想把这个电话作为POLYGON/TIN的EWKT代码。我怎样才能用正确的方式写出它......!?我会进一步尝试,但你的答案帮助我,好的代码!谢谢... :) – schnettchen

+0

实际上我期望这样写在POLYGONS的几何中: GeomFromEWKT('POLYGON((x1 y1 z1,x2 y2 z2,....))'3004) 但是如何使循环所有点,但多少,将被存储在一个多边形几何?谢谢 – schnettchen

相关问题