Consulta simples do PostGIS ST_Distance para dois pontos da mesma tabela geométrica?


11

Nota: Esta pergunta foi publicada no Stackoverflow primeiro .

Eu tenho uma tabela de geometria points_tablecom SRID 4326e alguns pontos nela.

Preciso encontrar uma distância entre um par de pontos (recursos) desta tabela.

Gostaria de selecionar um ponto com id = Xe outro ponto com id = Ye, em seguida, encontrar uma distância entre eles com a ST_Distancefunção.

Eu sei como consultar esses dois pontos do banco de dados:

select * from points_table where id = X or id = Y;

Mas essa consulta retorna um resultado, para o qual eu não sei como passar ST_Distance, porque ST_Distanceleva 2 parâmetros.

eu tentei Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Mas está obviamente errado.

Como posso encontrar a distância entre dois pontos geométricos (recursos) de uma tabela?

PS Todos os exemplos que encontrei até agora mostram o uso de ST_Distance com pontos codificados nos argumentos da função ST_Distance. Não encontrei um exemplo, em que ST_Distance é usado para calcular uma distância entre dois pontos da mesma tabela.

Respostas:


27

Você precisa fazer referência à sua tabela duas vezes, fornecendo diferentes aliases:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.