Подсчет нескольких точечных слоев в многоугольнике - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь посчитать разные магазины внутри полигонов торговой зоны в sql-запросе.Каждый магазин - это отдельная таблица в моей базе данных postgis.

Можно подсчитывать точки в многоугольниках, используя следующий код, взятый из https://gis.stackexchange.com/a/54680/19349:

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

Я изменил код для учета нескольких точек:

SELECT grid.gid, 
count(DISTINCT store1.geom) AS store1_count,
count(DISTINCT store2.geom) AS  store2_count
FROM grid
LEFT JOIN store1
ON st_contains(grid.geom,store1.geom)
LEFT JOIN store2
ON st_contains(grid.geom,store2.geom) 
GROUP BY grid.gid;

Это сработало, но, безусловно, должен быть лучший способ, поскольку непрерывные левые соединения экспоненциально ухудшают время выполнения.

...