J'utilise python et j'ai défini les latitudes et les longitudes (en degrés) d'un polygone sur la carte. Mon but est de vérifier si un point générique P
des coordonnées x,y
se trouve dans ce polygone. Je voudrais donc avoir une fonction qui me permet de vérifier cette condition et retourner True
ou False
si le point est à l'intérieur ou à l'extérieur du polygone.Vérifie si le géo-point est à l'intérieur ou à l'extérieur du polygone en Python
Dans cet exemple, le point est à l'extérieur de sorte que le résultat serait False
Question: Y at-il une bibliothèque/package qui permet d'atteindre mon objectif? Si oui, lequel recommandez-vous? serais-tu capable de donner un petit exemple sur la façon de l'utiliser?
Voici le code que je l'ai écrit jusqu'à présent:
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
Pour tracer le polygone et le point d'intérêt je cartopy et j'ai écrit les lignes de code suivantes:
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()
Remarque:
- points sont reliés les uns aux autres par la Grande-Ci rcles!
- J'ai fait des recherches dans le internt et j'ai fini par trouver des questions similaires like this one mais je n'ai pas eu de succès car ils utilisent tous des fichiers
.shp
que je n'ai pas.
Essayez de convertir cet algorithme en Python https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html # Le code C – arboreal84
python n'a pas de paquets qui font quoi que ce soit. il a un petit nombre de modules pré-construits. les paquets sont généralement fournis par la communauté. – Uriel
Le polygone est-il toujours convexe? –