Postgis가있는 다각형의 카운트 포인트


16

간단한 문제가 있습니다. 다각형 집합 내의 점 수를 세고 싶습니다.

나는 이미 SQL을 가지고 있지만 실제로 점을 포함하는 다각형의 갯수 만 돌려줍니다.

내 테이블 : 19.000 개의 행이있는 다각형 레이어와 450 개의 행이있는 포인트 레이어.

다음 SQL

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

실제로 점을 포함하는 약 320 개의 다각형 만 반환합니다. 그러나 모든 다각형이 반환되기를 원하지만 점의 수가 0이라고 생각했습니다.

물론 그것은 WHERE-clause와 관련이 있습니다. st_contains에 어디에 넣어야합니까?

감사합니다 Carsten



감사합니다, 그러나 그들은 모두 WHERE 절이 있습니다. 필요한지 모르겠습니다. 어떻게 다시 쓰시겠습니까?
hoge6b01

답변:


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;

안녕하세요 Nicklas, 메일 링리스트에서이 답변을 받았습니까? 감사합니다
hoge6b01

2
아니요, 죄송합니다. 유사합니까? 관계형 데이터베이스를 다룰 때 외부 조인은 로켓 과학이 아닙니다. ;-)
Nicklas Avén

1
:-) 나는 목록을 확인해야했다. 타이밍을보십시오. 내 대답은 list- answer 앞에 있었지만 당신이 말했듯이 매우 유사합니다 :-)
Nicklas Avén

-1

왼쪽 GIST 지수에서 지원되지 않습니다 조인.

내가 추천 할 수 있습니다 :

SELECT grid.gid, 
       SUM(CASE WHEN st_contains(grid.geom,kioskdhd3.geom) THEN 1 ELSE 0 END) AS total
FROM grid, kioskdhd3 
GROUP BY grid.gid;

1
querry는 공간 인덱스를 사용하지 않습니다 explain.depesz.com/s/U6Iy를 . 니클라스 응답을 수행합니다 explain.depesz.com/s/nhH
nickves에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.