2016-09-05 11 views
3

shapely.geometry.Polygonインスタンスを2つの部分で2つの部分に分割しようとしています。たとえば、以下のコードではpolygonがリングで、line1line2で切り捨てると、2つの部分的なリング、270度の1つと90度の1つの部分リングが得られるはずです。これを行うためのきれいな方法がありますか?多角形を2つの線で整形してカットする

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

ショーン

from shapely.geometry import Point, LineString, Polygon 

polygon = Point(0, 0).buffer(2).difference(Point(0, 0).buffer(1)) 
line1 = LineString([(0, 0), (3, 3)]) 
line2 = LineString([(0, 0), (3, -3)]) 

答えて

3

ケンワトフォードは、エリアのビットを失うことの欠点/ wが、トリックを行うためにbufferdifferenceを使用する方法についてhereに答え。以下のコード例:

from shapely.geometry import Point, LineString, Polygon 

polygon = Point(0, 0).buffer(2).difference(Point(0, 0).buffer(1)) 
line1 = LineString([(0, 0), (3, 3)]) 
line2 = LineString([(0, 0), (3, -3)]) 

line1_pol = line1.buffer(1e-3) 
line2_pol = line2.buffer(1e-3) 

new_polygon = polygon.difference(line1_pol).difference(line2_pol) 

今の作品、と私は別の(潜在的にW/O失うエリア)メソッドがあるかどうかを見て興味があると思います!

+0

私は正確な解決策は、重要な行のコードでゼロから背後にある数学の問題を実装する必要があると思います。特に一般的な用語では、問題を設定しています。 – eguaio

関連する問題