Contar pontos no polígono com Postgis


16

Eu tenho um problema simples: quero contar o número de pontos em um conjunto de polígonos.

Eu já tenho um SQL, mas ele apenas devolve o gid do polígono que realmente contém pontos.

Minhas tabelas: uma camada de polígono com 19.000 linhas e uma camada de ponto com 450 linhas.

O seguinte SQL

select grid.gid, count(*) AS totale FROM grid, kioskdhd3 WHERE 
st_contains(grid.geom,kioskdhd3.geom) GROUP BY grid.gid;

retorne apenas cerca de 320 polígonos que realmente contêm pontos. Mas quero que todos os polígonos sejam retornados, mesmo que o número de pontos seja 0.

Claro que tem a ver com a minha cláusula WHERE. Onde devo colocar meus st_contains?

Obrigado Carsten



obrigado, mas todos eles têm uma cláusula WHERE. Não sei se preciso de um. Como você reescreveria?
Hoge6b01

Respostas:


23
SELECT grid.gid, count(kioskdhd3.geom) AS totale 
FROM grid LEFT JOIN kioskdhd3 
ON st_contains(grid.geom,kioskdhd3.geom) 
GROUP BY grid.gid;

Oi Nicklas, recebi esta resposta da lista de discussão, certo? Obrigado a todos #
hoge6b01 17/03/2013

2
Não, desculpe, é semelhante? Bem, um exterior junta é nenhuma ciência de foguetes ao lidar com bancos de dados relacionais ;-)
Nicklas Aven

1
:-) Eu tive que verificar a lista. Veja o momento. A minha resposta aqui foi antes resposta lista-, mas como você disse, muito semelhante :-)
Nicklas Aven

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.