2017-02-03 20 views
2

多角形をより小さな部分に分割するために、shapelyとpythonを使用しています。台形、x軸に平行な辺を持つ平行四辺形、x軸に平行な辺を持つ三角形です。初期データは.gdsファイルから得られ、タプルx、y座標のリストのように表示されます。私の目的のために、私はhereのような違いの方法を使いました。ポリゴンがholesを持っている場合しかし、私は、たとえば、スタックを取得:行内のポリゴンを有効なポリゴンに変換する方法は?

from shapely.geometry import Polygon 
points = [(0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0), (3.0, 1.0), (3.0,-1.0)] 
poly = Polygon(points) 
print(poly.is_valid) 
#Self-intersection at or near point 2 1 
#False 

そこで問題は、ポリゴンの正しい作成のための船体と穴にポイントのリストを変換する方法を最も単純な方法とは何かありますか?

ありがとうございました!

答えて

0

poly.buffer(0)the shapely manual参照)を使用するのが標準的なトリックです。

polyb = poly.buffer(0) 
print(shapely.geometry.mapping(polyb)) 
# {'type': 'Polygon', 'coordinates': (((0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (3.0, -1.0), (0.0, -1.0)), ((2.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0)))} 
print(polyb.is_valid) 
# True 
+0

お返事ありがとうございました!私はここに書き込む前にそれを読んでいましたが、ポリゴン 'x、y = shape.exterior.coords.xy'をチェックする私の普通の方法と混同していましたが、もちろん内部ポイントはありませんでした。それであなたは私の心を晴らした。ありがとう! – Anton

関連する問題