5 votos

Cálculo de radio de / en EPSG 3785 del almacenador intermediario en buffer vs metros en WGS 84 metros

El objetivo es trabajar en EPSG 3785 y, en particular, los Mapas de Google, quiere representar (en una pieza) un círculo de un radio dado en metros. La representación se realiza en píxeles.

Supongo que uno podría tener una muy lineal simple enfoque para identificar los metros por píxel para un determinado azulejo de zoom:

metersPerPixel = MercWorldWidthMeters / (2 ^ zoom) / tileSize

Ahora, teniendo en cuenta que usted desea dibujar un radio de 100 metros alrededor de un punto en píxeles, a continuación, convertir a los píxeles:

pixelRadius = metersRadius / metersPerPixel

Esto se debe en mi mente crear un círculo de metersRadius en el azulejo.

Sin embargo, en realidad la medición de la producción de círculo con radio de un círculo producido en WGS 84 y el Gran Círculo de la lógica, se demuestra que es en realidad alrededor de un 40% menor de lo esperado... una gran diferencia.

¿La lógica de arriba tienen un defecto?

Tenga en cuenta que yo soy no interesado en encontrar un algoritmo alternativo (va a Gran Círculo cálculos y similares)... mi pregunta es:"¿por qué los resultados (tanto) diferente de lo esperado".

Todas las conversiones este momento han estado trabajando muy bien con la lógica anterior, pero una vez que me decidí a calcular la distancia real en EPSG 3785 me parece estar pegando un salto de la pared.


Para dar un ejemplo con cifras:

Radius: 0.08 miles ( = 128.74752 meters )
MercWorldWidthMeters: 20037508.342789 * 2
Zoom: 16
TileSize: 256

Por encima de la lógica sugiere un círculo de ~107 píxeles de diámetro.
Gran Círculo sugiere un círculo de ~175 píxeles de diámetro.

2voto

Zolomon Puntos 250

En cualquier zoom, los píxeles para el mundo real de la distancia varía con la Latitud. Esta es la razón por la que usted no puede utilizar el siguiente supuesto:

 metersPerPixel = MercWorldWidthMeters / (2 ^ zoom) / tileSize

Tenga en cuenta que si usted está utilizando el API de Google Maps, como se sugirió anteriormente, usted puede simplemente crear un Círculo de cualquier radio (en metros), y lo dibuje de forma adecuada. Si dibujas círculos cerca del ecuador y algunos cerca de los polos, usted verá la diferencia en el tamaño de los píxeles con bastante facilidad.

Para obtener más robustos algoritmos y los conceptos detrás de ellos, usted puede estar interesado en leer http://www.movable-type.co.uk/scripts/latlong.html. Además usted puede estar interesado en la geometría de la biblioteca (http://code.google.com/apis/maps/documentation/javascript/geometry.html#Distance)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X