2017-05-17 4 views
0

私は、座標が興味のあるものが矩形の内側か外側かを調べるコードを書いていました。私はMatlabの "inpolygon"に相当する目的を果たす関数 "contains_points"があることを発見しました。私は、この機能の実装または例に関する文書を見つけることができませんでした。誰でもこの作品の仕組みを提案できますか?ポリゴンの内部に目的の座標があるかどうかを調べる方法は?

+0

http://stackoverflow.com/questions/36399381/whats-the-fastest-way-of-checking-if-a-point-is-inside-a-polygon-in-python – itzMEonTV

答えて

0

shapelyライブラリーをご覧ください。 Pythonで2Dポリゴンを扱うときのデファクトスタンダードです(それはGEOS C++ライブラリのラッピングであるため、他の多くの言語でも可能です)。

あなたが何をしたいの例:

from shapely.geometry import Point, Polygon 
p = Point(0.0, 0.0) 
poly = Polygon([(1, 1), (-1, 1), (-1, -1), (1, -1)]) 
is_included = poly.contains(p) 

is_includedは今Trueです。

+0

これをチェック投稿された回答を見て、コメントをいただけますか? –

0

@Eguaio、あなたのコードを修正しようとしました。しかし、私は "ポリゴンにポイントが含まれていない"という結果を得ています。

from shapely.geometry import Point,Polygon 
a = Point([(0.0,0.0)]) 
b = Polygon([(1,1),(-1,1),(-1,-1),(1,1)]) 
if b.contains(a): 
    print "the points are included in the polygon" 
else: 
    print "the points are not included in the polygon" 
+0

あなたは自分のコードを正確にコピーしませんでした。 2つの違いがあります。 1)mycode: 'ポイント(0.0,0.0)'あなた: 'ポイント([0.0.0.0])'。 2)ポリゴンの最後の点は '(1、-1)'で、 '(0,0)'を含む正方形を生成します。 '(1,1)'を置くと、原点を含まない三角形になります。この第2の相違点が問題の原因となっています。ところで、あなたは私の答えのコメントとしてこれを置くべきです、それ自身の答えとして投稿してはいけません。そして、答えが良かったら、正しい答えとしてそれをチェックしてください。ありがとう。 – eguaio

+0

@eguaioさん、本当にありがとうございます。 –

関連する問題