2012-11-29 15 views
8

私はPythonプロジェクトに2つのShapelyオブジェクトをマージしようとしています。 cascaded_union()などShapeyのいくつかの機能について説明しているような種類のマニュアルがありますが、それはポリゴンでのみ機能します。 shapely.ops.unary_union()メソッドは他のジオメトリに対しても機能するはずですが、動作させることはできません。Shapely Objectsをマージするには?

一言で言えば、2つのLinearRingオブジェクトをマージするにはどうすればいいですか?

ありがとうございます!

Shapely Manual

答えて

6

私は実際に自分自身で問題を解決しました。

p1 = Polygon(ring.coords) 
p2 = Polygon(ring2.coords) 

私のリングからポリゴンを作る。それらのポリゴンで配列を作成します。それらをcascaded_unionとマージし、新しいポリゴンからLinearRingを作成します。

+0

線形リングからポリゴンを作成し、その上で操作し、結果をポリゴンに戻すと、プログラムの悪い仕事をして、もう読めるコードがないことが分かります。 私は実際に私のプロジェクト全体を線形リングの代わりにポリゴンに変更しました。これは、LinearRingsで "十字架"の "交差"などのメソッドのほとんどを使用することができないことを認識したからです。しかし、ポリゴンにすることができます。だから賢く選んでください!あなたがShapelyを使用していて、「内側」「外側」のオブジェクトをチェックしたい場合は、ポリゴンがかなり必要です。 –

+1

多角形から点を抽出する方法を探していて、その答えが助けになりました。与えられた例では、 'poly_x、poly_y = new_pol.exterior.coords.xy'でこれを行うことができます。ありがとう。 – ryanjdillon