Saltar al contenido

Compruebe si el punto geográfico está dentro o fuera del polígono

Recuerda que en las ciencias cualquier problema casi siempre tiene diferentes resoluciones, de igual modo te enseñamos lo más óptimo y mejor.

Solución:

Aquí hay una posible solución a mi problema.

  1. Las coordenadas geográficas deben almacenarse correctamente. Ejemplo np.array([[Lon_A, Lat_A], [Lon_B, Lat_B], [Lon_C, Lat_C]])
  2. Crea el polígono
  3. Crear el punto a probar
  4. Usar polygon.contains(point) para probar si el punto está dentro (True) o afuera (False) el polígono.

Aquí está la parte faltante del código:

from shapely.geometry import Point
from shapely.geometry.polygon import Polygon

lons_lats_vect = np.column_stack((lons_vect, lats_vect)) # Reshape coordinates
polygon = Polygon(lons_lats_vect) # create polygon
point = Point(y,x) # create point
print(polygon.contains(point)) # check if polygon contains point
print(point.within(polygon)) # check if a point is in the polygon 

Nota: el polígono no tiene en cuenta grandes círculos, por lo que es necesario dividir las aristas en muchos segmentos aumentando así el número de vértices.


Caso especial: si el punto se encuentra en los bordes del polígono

P.ej print(Polygon([(0, 0), (1, 0), (1, 1)]).contains(Point(0, 0))) fallará

Entonces uno puede usar

print(polygon.touches(point)) # check if point lies on border of polygon 

También hay una biblioteca de python emergente turbio. que se utiliza para el análisis geoespacial.

PyPI

Github

Ejemplo:

from turfpy.measurement import boolean_point_in_polygon
from geojson import Point, Polygon, Feature

point = Feature(geometry=Point((-46.6318, -23.5523)))
polygon = Polygon(
    [
        [
            (-46.653, -23.543),
            (-46.634, -23.5346),
            (-46.613, -23.543),
            (-46.614, -23.559),
            (-46.631, -23.567),
            (-46.653, -23.560),
            (-46.653, -23.543),
        ]
    ]
)
boolean_point_in_polygon(point, polygon)

Otra forma de hacerlo es usando el algoritmo par-impar explicado en este enlace https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html El código de Python se encuentra en wikipedia https://en. wikipedia.org/wiki/Even–Odd_rule

¡Amigos, solo recuerden que el ORDEN DE LOS PUNTOS que hacen que el polígono IMPORTE! Quiero decir, un orden diferente da como resultado diferentes polígonos.

Calificaciones y comentarios

Al final de la página puedes encontrar las interpretaciones de otros administradores, tú incluso eres capaz mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *