Eu estive examinando a "API" de funções do PostGIS e percebo que a maioria delas precisa de dois elementos para comparar. Por exemplo, a função ST_Distance usa dois elementos de geometria / geografia para encontrar a distância.
Não há função para fazer algo como: "Dada uma geometria G, me dê a geometria mais próxima GClosest na Tabela T, onde G.id <> GClosest.id"
Sei que poderia escrever uma função PL / PgSQL para iterar sobre a tabela e chamar ST_Distance em cada elemento, mas espero que exista uma solução melhor e mais eficiente.
postgis
postgresql
Jmoney38
fonte
fonte
Respostas:
Sua pergunta também pode ser respondida por uma única consulta (embora complexa), como a seguinte, que retorna o registro inteiro e a distância para a geometria de referência. Observe que, se mais de um registro corresponder à distância mínima, todos serão retornados.
Eu testei esta consulta na tabela de endereços e funciona. Na consulta acima, estou procurando o ponto mais próximo do que com id = 3.
fonte
George MacKerron escreveu uma função simples de vizinho mais próximo que eu achei bastante útil. Esta função retorna o ID do vizinho mais próximo a um determinado recurso:
Exemplo de uso:
... seleciona o nó mais próximo na tabela nw_node para cada entrada em my_point_table.
Há também uma função mais genérica no site GIS de Boston .
fonte