Hitung Poin dalam Poligon dengan Postgis


16

Saya punya masalah sederhana: Saya ingin menghitung jumlah poin dalam satu set poligon.

Saya sudah punya SQL tetapi hanya mengembalikan gid dari polygone yang sebenarnya mengandung poin.

Tabel saya: lapisan poligon dengan 19.000 baris dan layer titik dengan 450 baris.

SQL berikut

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

hanya mengembalikan 320 poligon yang benar-benar mengandung poin. Tapi saya ingin semua poligon dikembalikan, bahkan mengira jumlah poin adalah 0.

Tentu saja itu ada hubungannya dengan klausa WHERE saya. Di mana saya harus meletakkan st_contains?

Carsten terima kasih



terima kasih, tetapi mereka semua memiliki klausa WHERE. Saya tidak tahu apakah saya membutuhkannya. Bagaimana Anda akan menulisnya kembali?
hoge6b01

Jawaban:


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;

Hai Nicklas, dapatkan jawaban ini dari milis, kan? Terima kasih semuanya
hoge6b01

2
Tidak, maaf, Apakah mirip? Nah,
gabungan

1
:-) Saya harus memeriksa daftar. Lihatlah waktunya. Jawaban saya di sini adalah sebelum daftar- jawaban, tetapi seperti yang Anda katakan, sangat mirip :-)
Nicklas Avén

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.