straight
の距離がPoint
(緯度と経度)からPolygon
までの間にあるのは、Shapely
ですか?私はそれが最も近い道を見つけることは可能ですが、私は最長についてはよく分かりません。ポイントとポリゴンの間の最長の「直線」パスを見つけよう
答えて
はg1.hausdorff_distance(g2)
のfuctionによって返されるHausdorff distanceを、試してみてください。
from shapely.geometry import Polygon, Point
poly = Polygon([(-1, -1), (-2, 2), (4, 4), (4, -1), (-1, -1)])
p = Point(0, 0)
poly.hausdorff_distance(p) # 5.656854249492381
格好の良いだけでデカルト空間で動作しますが、覚えておいてください。あなたの質問は「緯度と経度」について尋ねるので、これらの距離単位は度です。従来型の長さ単位を得るには、これを適切な座標参照システム(CRS)に投影する必要があります。さらに、「ストレートパス」の定義はCRSの選択によって変わる。
一つの方法は、点のセットに多角形の外面を離散化し、この点のセットにおける点と各点との距離を計算された:もちろん
def longest(poly, p, num):
lr = LinearRing(poly.exterior.coords)
dist = 0
for i in np.linspace(0, lr.length, num):
d = p.distance(lr.interpolate(i))
if d > dist:
dist = d
return dist
poly = Polygon([(-1, -1), (-2,2), (4,4), (4, -1), (-1, -1)])
p = Point(0,0)
longest(poly, p, 20)
# out: 5.428886519426354
longest(poly, p, 100)
# out: 5.622291976018042
それは正確ではないが、缶多くの状況に対して合理的な近似であること。
備考:lon/latは、遠くに滑らかに使用しないでください。正確にはデカルト座標系に基づいています。一般に、距離を測定するために整形式を使用できるように、まずジオメトリ(pyprojを使用)を投影する必要があります。
2つの観察。 1)ポリゴンの頂点で実際に最大距離が達成されていることは容易にわかるので、メソッドは正確です。 2)配列内の距離を累積して最大になるように並べ替えることは、変数に最大値を格納し、距離を計算する間に比較する場合に比べて非常に非効率的です。両方の処理でメモリ使用量。 – eguaio
@eguaioヒントありがとう、私は答えを更新しました。あなたの最初の点について:最長距離は 'math.sqrt((4 ** 2)+(4 ** 2))= 5.656854249492381'ですが、関数は少し異なるものを返します。 'num'引数を増やすと精度が上がります(例で説明しようとしたように)。 –
- 1. 2つのポリゴンの間に区切り線を見つける
- 2. UNITYの直線と曲線との間の最長距離
- 3. ルートノードと任意の子の間の最長のパスを見つける
- 4. パイソン - 見つける最長パス
- 5. MATLABの点と曲線の間の最小距離を見つけよう
- 6. ポイントグループの最大ポリゴンを見つける
- 7. Floyd/Warshallアルゴリズム最長のパスで最も安いパスを見つけるmod
- 8. 直線部分と曲線の傾きを見つける
- 9. cypherクエリで最長のパスを見つける方法
- 10. MySQL:各点に最も近いポリゴンを見つけよう
- 11. 各ポリゴンの空間データフレームの最長行?
- 12. ポイントとポリゴンとの間の距離R
- 13. 基底のプロパティパスを知らないで、Dbpediaグラフネットワークの2つのノード間のパス長を見つけよう
- 14. AWS CLI S3APIパスに最新のフォルダを見つけよう
- 15. Prologリストで家族最長と最年少の子供を見つけよう
- 16. lat-longとポイントとの間の距離を見つける
- 17. ポリゴンの最も近い点をユーザーの位置に見つけよう
- 18. 交差ボックスから実線のポリゴンを見つけるアルゴリズム?
- 19. 直線と区分線形曲線の交点を見つける
- 20. ポイント間の最短距離を見つける最速の方法
- 21. 直線から最も遠い点を見つける
- 22. 与えられたポイントとエッジのポリゴンを見つける方法は?
- 23. 他の1と1を分離する水平線と垂直線の最小数を見つけますか?
- 24. Android:Googleマップで街頭を覗いている2つ以上のポイント間の最速ルートを見つけよう
- 25. ギャップなしの最長期間を見つける
- 26. スウィフトの直線パス
- 27. Matlabで水平線と垂直線のみを見つけるようにハフ変換をフィルタリングする
- 28. Pythonで2つのgpsポイント間の距離を見つける
- 29. Pythonリスト内のポイント間の最短距離を見つけるクリーナーメソッド?
- 30. 双曲線ポリゴンの周長の比較
PythonでCRSを実現する方法はありますか? –
[pyproj](https://github.com/jswhit/pyproj)([この方法](https://gis.stackexchange.com/q/127427/1872))でジオメトリを投影し、 [この地図投影法のリスト](https://en.wikipedia.org/wiki/List_of_map_projections) –
射影の選択を伴わない別の戦略は、逆測地線距離 's12'を見つけることです[geographiclib](https://geographiclib.sourceforge.io/html/python/)でlat/lonポイントの各ペアから取得します。 –