¿Cuál es la forma correcta de crear un rectángulo a partir de un punto de origen y un punto final con Python?
Supongamos que tenemos las siguientes coordenadas; un punto de origen y un punto final basados en un ángulo: [(37.040893, -7.83197), (37.042393, -7.83197)]. En un mapa, los representé de la siguiente manera:
Pude obtener el punto final exitosamente como se muestra a continuación y funciona perfectamente:
import math
end_lat = origin_point[0] + length * math.sin(math.radians(angle))
end_lon = origin_point1 + length * math.cos(math.radians(angle))
Pero quiero crear un rectángulo con una longitud de x metros y un ancho de 6 metros basado en el punto de origen y el punto final. Mientras tanto, el punto de origen y el punto final se encuentran en el centro de sus vértices. La siguiente ilustración explica lo que estoy intentando hacer:
Ahora, encontré que 1 grado de latitud es igual a 110.574 km, y 1 grado de longitud es igual a 111.320 * cos(latitud) km. Y, no estoy familiarizado con las matemáticas y no debería abordar el problema linealmente (a ciegas). ¿Cómo puedo resolver esto y estar seguro de que todo funciona perfectamente?
davy.ai
Para crear un rectángulo con una longitud de
x metros
y un ancho de6 metros
basado en el punto de origen y el punto final, puedes seguir los siguientes pasos:d
.d
de metros a grados de latitud y longitud. Recuerda que 1 grado de latitud es igual a 110.574 km y 1 grado de longitud es igual a 111.320*cos(latitud) km. Llamemos a estas dos distancias convertidaslat_deg
ylon_deg
, respectivamente.alpha
entre los puntos de origen y final utilizando la siguiente fórmula:Nota: Debes manejar los casos especiales donde
end_lon == origin_lon
yend_lat < origin_lat
.Nota: El factor
0.5
se utiliza para centrar los vértices alrededor de los puntos de origen y final. El factor6 / 111111
se utiliza para convertir 6 metros a grados de latitud. El factor6 / (111111 * math.cos(origin_lat))
se utiliza para convertir 6 metros a grados de longitud en la latitud del punto de origen.Con estos pasos, puedes crear un rectángulo con una longitud de
x metros
y un ancho de6 metros
basado en el punto de origen y el punto final.