Pythonでポイントがポリゴン内にあるかどうかを確認する最速の方法は何ですか

| |

ポイントがポリゴン内にあるかどうかを確認するための2つの主な方法を見つけました。 1つは、ここ、これが最も推奨される答えですが、もう1つはmatplotlib path.contains_points を使用しています(これは私には少しわかりにくいようです)。たくさんのポイントを継続的にチェックする必要があります。これら2つのいずれかが他よりも推奨されるかどうか、またはさらに優れた3番目のオプションがあるかどうかを誰かが知っていますか?

更新:

2つの方法を確認したところ、matplotlibの方がはるかに高速に見えます。

  from time import time import numpy as np import matplotlib.path as mpltPath#テスト用の通常のポリゴンlenpoly =100ポリゴン=[[np.sin(x)+0.5、np.cos(x )+0.5] for x in np.linspace(0,2 * np.pi、lenpoly)[:-1]]#テストするポイントのランダムポイントセットN =10000ポイント=np.random.rand(N、2) #レイトレースdef ray_tracing_method(x、y、poly):n = len(poly)inside = False p1x、p1y = poly [0] for i in range(n + 1):p2x、p2y = poly [i%n] y>の場合min(p1y、p2y):if y< = max(p1y、p2y):if x< = max(p1x、p2x):if p1y!= p2y:xints =(y-p1y)*(p2x-p1x) /(p2y-p1y)+ p1x if p1x == p2xまたはx< = xints:inside = not inside p1x、p1y = p2x、p2y return inside start_time = time()inside1 = [ray_tracing_method(point [0]、point [ 1]、polygon)for point in points] print(" Ray Tracing Elapsed time:" + str(time()-start_time))#Matplotlib mplPath start_time = time()path = mpltPath.Path(polygon)inside2 = path .contains_points(points)print(" Matplotlib contains_points経過時間:" + str(time()-start_time)) 

これにより、

 レイトレース経過時間:0.441395998001 Matplotlib contains_points経過時間:0.00994491577148  

100辺のポリゴンの代わりに三角形を使用した場合と同じ相対差が得られました。こういう問題にこだわったパッケージに見えるので、形を整えてチェックします

この記事が問題の解決に役立つことを願っています。 Pythonでポイントがポリゴン内にあるかどうかを確認する最速の方法は何ですか とは別に、他の cos 関連のトピックを確認してください。

Python で上達したいですか?  最高の Python オンライン コース 2022 のレビューをご覧ください。 データ サイエンスに興味がある場合は、R でプログラミングを学ぶ方法も確認してください。

ちなみに、この資料は他の言語でも利用できます:



Carlo Zelotti

Warsaw | 2022-11-27

シンプルにまとめられていて分かりやすい。シェアしてくださってありがとうございます。Pythonでポイントがポリゴン内にあるかどうかを確認する最速の方法は何ですかやsinの問題はいつも私の弱点でした😁。. それが最良の方法であるかどうかはわかりません

Jan Robinson

Moscow | 2022-11-27

シンプルにまとめられていて分かりやすい。シェアしてくださってありがとうございます。Pythonでポイントがポリゴン内にあるかどうかを確認する最速の方法は何ですかやsinの問題はいつも私の弱点でした😁。. 昨日確認したところ、動作しています!

Angelo Schteiner

Texas | 2022-11-27

もしかしたら、別の答えがあるのかも?何 Pythonでポイントがポリゴン内にあるかどうかを確認する最速の方法は何ですか はどういう意味ですか?. フィードバックで明日戻ってきます

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically