Más

Cálculo de distancias entre columnas geométricas de SRID diferentes

Cálculo de distancias entre columnas geométricas de SRID diferentes


Estoy intentando una tarea relativamente sencilla, pero me he encontrado con problemas. Tengo dos tablas, una que tiene puntos de latitud y longitud que se codificaron geográficamente con google (SRID 3857) y otra tabla que contiene límites de bloque obtenidos del censo (SRID 4269). A continuación se muestran los pasos que he tomado.

Después de convertir los puntos del mapa de Google en geometría. Intenté facilitarme las cosas calculando los centroides de los límites del bloque con el siguiente comando

CREAR TABLA mytable COMO SELECT var1, var2, ST_Centroid (geom) como geom FROM oldtable;

Luego intenté convertir los centroides en la nueva tabla a SRID 3857 usando lo siguiente

CREAR TABLA block3857 COMO SELECT var1, var2, ST_Transform (geom, 3857) como geom FROM mytable;

Después de crear un índice geoespacial tanto en la nueva tabla del censo como en la tabla de Google Maps, intenté fusionar la geometría de Google Maps con los centroides del censo de la siguiente manera:

CREAR TABLA fusionada COMO SELECT a.var1, b.var2, b.var3 FROM googlemapstable como a, block3857 como b WHERE ST_DWithin (a.geom, b.geom, 4828.032)

Para mi sorpresa, la fusión no arrojó resultados. Dibujé algunos de los puntos uno encima del otro en R y encontré que muchos de ellos se superponían y deberían haberse fusionado. Mi siguiente paso para solucionar problemas fue observar las distancias entre los puntos. Tomé solo un pequeño subconjunto de los puntos en una ciudad y encontré que ST_Distance estaba dando resultados de casi 1,000,000 de unidades.

Eché un vistazo a los puntos de latitud y longitud subyacentes de las columnas de geometría y descubrí que los puntos del mapa de Google parecían normales para los EE. UU., Pero los puntos de latitud y longitud del censo eran diferentes de los que he visto, con la parte del número entero del punto tener 8 dígitos de largo. Volví y descubrí que este cambio en lat / lon ocurrió DESPUÉS de convertir a SRID 3857. ¿Alguien sabe si la función ST_Distance hace uso de los puntos lat y lon para hacer el cálculo y si esto es lo que está causando mi problema? ¿Alguien tiene alguna solución a lo que está pasando aquí?


Sospecho que su SRID de Google puede ser incorrecto.

Creo que los resultados de codificación geográfica de Google utilizan SRID 4326 (WGS 84).

Creo que Google usa 3857 para la visualización del mapa, pero genera los datos como 4326.


Ver el vídeo: Calculo de Distancias Inaccesibles