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.

skanatek
fonte

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';
Mike T
fonte