2017-04-24 51 views
3

パスの実際の境界上の点も考慮するヒットテストのユースケースがあります。私たちはmatplotlib.path.contains_pointsを使って多数のポイントをテストしています。それはとてもうまく動作しています。今日私は、境界上の点についてはfalseを返します。私たちの場合は、経路上の点である原点(0,0)です。matplotlib.path.contains_pointsに境界点を含める方法がありますか

境界点を含むTrueを得るために関数呼び出しを構成する方法はありますか?それには境界が含まれていますか?私はそれが独占的なテストをサポートしているのを見ているだけですが、documentationによれば、変換と半径のための他のパラメータがあります。境界ポイントのために真を押し出すための魔法の数がありますか?

contains_points(points, transform=None, radius=0.0)経路は、対応する点が含まれている場合Trueあるbool 配列を返し。

transformNoneではない場合、パスは がテストを実行する前に変換されます。

radiusは、パスをわずかに大きくまたは小さくすることができます。

+1

ソースコードのクイックスキャンはnoと言います。このような操作の場合、この種のために特別に作られた ['shapely'](http://toblerity.org/shapely/manual.html#object.intersects)を使用することをお勧めしますか? 'shapely'を使うと、これを処理するために[' object.intersects'](http://toblerity.org/shapely/manual.html#object.intersects)を利用することができます。 –

+0

私はそのようなことを再実装することに絶対にオープンです。汎用計算ジオメトリライブラリが存在することを知っておくとよいでしょう。私は基本的に、FDAの規則でよく見かけるいくつかの許容される合計エラーの作業を行っています。もし滑らかにPython 3.6でロールすることができ、いくつかのPandas.Seriesオブジェクトから直接またはいくつかの中間体を介して合理的に読み込まれれば、私は良いことになるはずです。共有してくれてありがとう。私は明日の後半にあなた自身のソースを掘り下げようとしていました。あなたのクイックスキャンが正確で、答えを押して、私はそれをチェックします。 – jxramos

答えて

2

ソースコードのクイックスキャンではnoと表示されます。 matplotlibは実際には空間操作のためのものではありません。巨大なAPIサーフェスを備えた古いコードベースであるため、ちょっとしたサポートがあります。

このような空間操作専用に構築された shapelyを使用することをお勧めします。 shapelyを使用する場合は、object.intersectsを利用してこれを処理できます。

shapely.Pointオブジェクトとポリゴン(一連の座標が与えられている)からなるpandas.Seriespoly = shapely.Polygon(coordinates)オブジェクトにポイントを転がすことができます。次に何かのようにしてくださいpoints_that_intersect = points[points.map(lambda p: poly.intersects(p)]

関連する問題