我正在使用python,並且我已經定義了地圖上多邊形的緯度和經度(以度爲單位)。 我的目標是檢查座標x,y
的通用點P
是否屬於這樣的多邊形。因此,我希望有一個功能允許我檢查這種情況,如果點位於多邊形的內部或外部,則返回True
或False
。檢查地理點是否在Python中的多邊形內或外
在這個例子中,關鍵是外面那麼結果將是False
問題:是否有圖書館/包,允許達到我的目標?如果是的話,你推薦哪一個?你能否舉一個小例子來說明如何使用它?
這是迄今爲止我所編寫的代碼:
import numpy as np
# Define vertices of polygon (lat/lon)
v0 = [7.5, -2.5]
v1 = [2, 3.5]
v2 = [-2, 4]
v3 = [-5.5, -4]
v4 = [0, -10]
lats_vect = np.array([v0[0],v1[0],v2[0],v3[0],v4[0]])
lons_vect = np.array([v0[1],v1[1],v2[1],v3[1],v4[1]])
# Point of interest P
x, y = -6, 5 # x = Lat, y = Lon
## START MODIFYING FROM HERE; DO NOT MODIFY POLYGON VERTICES AND DATA TYPE
# Check if point of interest falls within polygon boundaries
# If yes, return True
# If no, return falls
爲了繪製多邊形和我用cartopy,我寫了下面的代碼行的關注點:
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
ax = plt.axes(projection=ccrs.PlateCarree())
ax.stock_img()
# Append first vertex to end of vector to close polygon when plotting
lats_vect = np.append(lats_vect, lats_vect[0])
lons_vect = np.append(lons_vect, lons_vect[0])
plt.plot([lons_vect[0:-1], lons_vect[1:]], [lats_vect[0:-1], lats_vect[1:]],
color='black', linewidth=1,
transform=ccrs.Geodetic(),
)
plt.plot(y, x,
'*', # marker shape
color='blue', # marker colour
markersize=8 # marker size
)
plt.show()
注意:
- 點用大詞相互連接rcles!
- 我在internt中進行了研究,最後我發現了一些類似的問題like this one,但我沒有成功,因爲他們都使用我沒有的
.shp
文件。
嘗試將此算法轉換爲Python https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly。html#C代碼 – arboreal84
python沒有可執行任何操作的軟件包。它有少量的預建模塊。包通常由社區提供。 – Uriel
多邊形是否總是凸出的? –