Verifique se o ponto geográfico está dentro ou fora do polígono no Python
Estou usando python e defini as latitudes e longitudes (em graus) de um polígono no mapa. Meu objetivo é verificar se um ponto genéricoP
de coordenadasx,y
cai dentro desse polígono. Gostaria, portanto, de ter uma função que me permita verificar tal condição e retornarTrue
ouFalse
se o ponto estiver dentro ou fora do polígono.
Neste exemplo, o ponto está fora, então o resultado seriaFalse
Pergunta, questão: Existe uma biblioteca / pacote que permita alcançar meu objetivo? Se sim, qual você recomenda? você poderia dar um pequeno exemplo de como usá-lo?
Aqui está o código que escrevi até agora:
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
Para plotar o polígono e o ponto de interesse, usei cartopy e escrevi as seguintes linhas de código:
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()
Nota:
pontos são conectados entre si pelos Grandes Círculos!Eu pesquisei no estagiário e acabei encontrando algumas perguntas semelhantescomo este mas não tive sucesso, pois todos eles usam.shp
arquivos que eu não tenho.