Contar puntos en polígono con Postgis


16

Tengo un problema simple: quiero contar el número de puntos dentro de un conjunto de polígonos.

Ya tengo un SQL, pero solo devuelve el gid del polygone que realmente contiene puntos.

Mis tablas: una capa de polígono con 19,000 filas y una capa de puntos con 450 filas.

El siguiente SQL

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

devuelve solo unos 320 polígonos que realmente contienen puntos. Pero quiero que se devuelvan todos los polígonos, incluso aunque el número de puntos sea 0.

Por supuesto, tiene que ver con mi cláusula WHERE. ¿Dónde tengo que poner mis st_contains?

Gracias Carsten



gracias, pero todos tienen una cláusula WHERE. No sé si necesito uno. ¿Cómo lo reescribirías?
hoge6b01

Respuestas:


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;

Hola Nicklas, recibí esta respuesta de la lista de correo, ¿verdad? Gracias a todos
hoge6b01

2
No, lo siento, ¿es similar? Bueno, una
unión

1
:-) Tuve que revisar la lista. Mira el momento. Mi respuesta aquí fue antes de la lista: respuesta, pero como dijiste, muy similar :-)
Nicklas Avén

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.