Compruebe si el geopunto está dentro o fuera del polígono en Python
Estoy usando python y he definido las latitudes y longitudes (en grados) de un polígono en el mapa. Mi objetivo es verificar si un punto genéricoP
de coordenadasx,y
cae dentro de tal polígono. Por lo tanto, me gustaría tener una función que me permita verificar dicha condición y regresarTrue
oFalse
si el punto está dentro o fuera del polígono.
En este ejemplo, el punto está fuera, por lo que el resultado seríaFalse
Pregunta: ¿Hay una biblioteca / paquete que permita alcanzar mi objetivo? en caso afirmativo, ¿cuál me recomiendan? ¿Serías capaz de dar un pequeño ejemplo sobre cómo usarlo?
Aquí está el código que he escrito hasta ahora:
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 trazar el polígono y el punto de interés, utilicé cartopy y escribí las siguientes líneas 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:
¡los puntos están conectados entre sí por Great Circles!Investigué en el internt y terminé encontrando algunas preguntas similarescomo éste pero no tuve éxito ya que todos usan.shp
archivos que no tengo.