Necesito encontrar la distancia en dirección este desde cada punto hasta el borde del polígono más cercano:
Puedo encontrar la distancia más corta en cualquier dirección con:
pointlayer = QgsProject.instance().mapLayersByName('points_inter_squares')[0]
points = [[f.geometry(),f['Ruta_100km']] for f in pointlayer.getFeatures()]
squarelayer = QgsProject.instance().mapLayersByName('squares')[0]
squares = [[f.geometry(),f['Ruta_100km']] for f in squarelayer.getFeatures()]
for point in points:
print(min([QgsGeometry.distance(point[0],square[0]) for square in squares if point[1]!=square[1]]))
>>12639.380321901293
>>3320.150455611874
>>6650.862023710273
>>2452.079442886869
'Ruta_100km' es el ID de las Casillas, así que mido la distancia a todas las Casillas menos a la que cruza los Puntos.
¿Existe algún método que permita especificar la dirección al medir la distancia?
1 votos
Podrías extender una línea desde tus puntos en dirección este e intersectar con la cuadrícula, encontrar el segmento que toca tu punto de creación y obtener la longitud de ese segmento. El segmento hacia el este debe ser una distancia muy grande para asegurar que haya una intersección encuentre la extensión de su cuadrícula y use el valor máximo de X.
0 votos
¿La longitud de los lados de los cuadrados es siempre de 100 km y las coordenadas del origen de la cuadrícula son un múltiplo entero de 100 km o buscas una solución general?
0 votos
La cuadrícula no siempre es de 100 km, sino que siempre es una cuadrícula cuadrada.
0 votos
@Michael Stimson: ¿No hay siempre una intersección si la longitud de su línea propuesta hacia el este es igual al espacio de la cuadrícula y el punto no está exactamente en una línea de la cuadrícula?