gis gps – calcular el cuadro delimitador a partir de la coordenada central conocida y el zoom

Pregunta:

Tengo un mapa, el centro de ese mapa (punto central) es = -37,175 (gps)
Sé el zoom del mapa = 13
Sé el tamaño = 320x320px
Sé que hay 111111 m en un grado de latitud y un grado variable de longitud

Quiero poder calcular el valor para sumar y restar de la coordenada central que me dará una coordenada gps superior izquierda / inferior derecha.

Para un zoom de 13, solía lograr esto mediante Nota: centrelat = -37
por ejemplo: -37 – (-37/1650) = -36,9776 grados. En otras palabras, para encontrar la esquina sureste, restamos .0228 grados de la coordenada central. Hice lo mismo para la longitud pero usé el valor 6250
por ejemplo: 175 – (175/6250) (.02804 grados). = 174.792, es decir, la esquina noroeste
la relación entre .0228 grados (lat) y .0280 grados (largo) es correcta

Entonces, quiero que este cálculo sea dinámico y funcione para todos los zooms
entonces estoy usando (cos Latitude x 111111) / 2 ^ Zoom (13) = 10.72095
para la longitud estoy usando 111111/2 ^ 13 = 13.56
¡Esta es la misma proporción también, así que estoy en el camino correcto!
pero ¿cómo uso estos valores en un cálculo para sumar o restar grados de las coordenadas centrales de latitud y longitud para obtener las coordenadas de las esquinas del cuadro delimitador?

cualquier ayuda es apreciada, y lo digo en serio.

Respuesta:

Suponiendo que está utilizando la proyección de Web Mercator (Google Maps, MapBox, etc.), la clave está en estas dos ecuaciones:

Fórmulas de Web Mercator en Wikipedia: https://en.wikipedia.org/wiki/Web_Mercator#Formulas

donde λ es la longitud en radianes y φ es la latitud geodésica en radianes . Los valores xey son las llamadas ' coordenadas de píxeles ' tal como las definió originalmente Google.

Lo que realmente necesita es la inversa de estas dos ecuaciones, de modo que pueda convertir la latitud y la longitud en valores xey. Las ecuaciones inversas son:

Ecuación lambda inversa

Ecuación de phi inversa

donde

Ecuación F

Dadas las coordenadas centrales de su imagen definidas por λ y φ, conviértalas en las coordenadas de píxeles xey para el nivel de zoom elegido utilizando las dos primeras ecuaciones anteriores.

Si h es la altura de su imagen y w es su ancho, entonces puede calcular las coordenadas de (l) eft, (r) ight, (t) op y (b) ottom píxeles de su imagen:

l = x – (w / 2)
r = x + (w / 2)
t = y – (h / 2) (ya que cero está en la parte superior de los píxeles de Web Mercator)
b = y + (h / 2)

Luego, de vuelta convertir en latitud y longitud usando las ecuaciones originales, sustituyendo l o r para x, y t o b para y.

EDITAR: Al probar esto con la API estática de MapBox que no es Retina, descubrí que tenía que usar un factor de 4 en lugar de 2 en las últimas cuatro ecuaciones. No estoy seguro de por qué es así, pero probablemente tenga algo que ver con el escalado interno en los servidores MapBox.

Deja un comentario

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

Ir arriba