Mais

Calculando distâncias entre colunas de geometria de SRIDs diferentes


Estou tentando uma tarefa relativamente simples, mas estou tendo problemas. Eu tenho duas tabelas, uma que tem pontos lat e lon que foram geocodificados usando o google (SRID 3857) e outra tabela que contém limites de bloco obtidos do Censo (SRID 4269). Abaixo estão as etapas que dei.

Depois de converter os pontos do mapa do google em geometria. Tentei tornar as coisas mais fáceis para mim calculando os centróides dos limites do bloco com o seguinte comando

CREATE TABLE mytable AS SELECT var1, var2, ST_Centroid (geom) as geom FROM oldtable;

Em seguida, tentei converter os centróides na nova tabela para SRID 3857 usando o seguinte

CREATE TABLE block3857 AS SELECT var1, var2, ST_Transform (geom, 3857) como geom FROM mytable;

Depois de criar um índice geoespacial na nova tabela do censo e na tabela do google maps, tentei mesclar a geometria do google maps com os centróides do censo da seguinte maneira:

CREATE TABLE mesclado AS SELECT a.var1, b.var2, b.var3 FROM googlemapstable as a, block3857 as b WHERE ST_DWithin (a.geom, b.geom, 4828.032)

Para minha surpresa, a fusão não produziu resultados. Plotei alguns dos pontos uns sobre os outros em R e descobri que muitos deles estavam sobrepostos e deveriam ter se fundido. Minha próxima etapa para solucionar o problema foi examinar as distâncias entre os pontos. Peguei apenas um pequeno subconjunto dos pontos em uma cidade e descobri que ST_Distance estava produzindo resultados de quase 1.000.000 de unidades.

Dei uma olhada nos pontos lat e lon subjacentes das colunas de geometria e descobri que os pontos do google map pareciam normais para os EUA, mas os pontos lat e lon do censo eram diferentes do que eu já vi, com a parte inteira do ponto tendo 8 dígitos de comprimento. Voltei e descobri que essa mudança na lat / lon ocorreu APÓS a conversão para SRID 3857. Alguém sabe se a função ST_Distance faz uso dos pontos lat e lon para fazer o cálculo e se é isso que está causando meu problema? Alguém tem alguma solução para o que está acontecendo aqui?


Suspeito que seu Google SRID esteja incorreto.

Acredito que os resultados do geocódigo do Google usam SRID 4326 (WGS 84).

Acredito que o Google usa 3857 para a exibição do mapa, mas produz os dados como 4326.


Assista o vídeo: Jakie wymiary będzie miał prostokąt w skali 3:1 i 5:1? Skala - powiększenie. (Outubro 2021).