"""Comprobacion de punto dentro de poligono con soporte de agujeros (holes).""" from python.functions.geo.point_in_ring import point_in_ring def point_in_polygon(lon: float, lat: float, polygon: list[list[tuple[float, float]]]) -> bool: """Determina si el punto (lon, lat) esta dentro del poligono. polygon[0] es el anillo exterior. polygon[1:] son agujeros (holes). Retorna True si el punto esta en el exterior y NO en ningun agujero. Args: lon: longitud del punto en grados. lat: latitud del punto en grados. polygon: lista de anillos; el primero es el exterior, el resto son agujeros. Returns: True si el punto esta dentro del poligono (y fuera de todos los holes). """ if not polygon: return False outer = polygon[0] if not point_in_ring(lon, lat, outer): return False for hole in polygon[1:]: if point_in_ring(lon, lat, hole): return False return True