Я пытаюсь подсчитать долю точек, которые соответствуют определенному условию в каждом полигоне. Я знаю, сколько всего наблюдений соответствует условию, и я хочу знать, как они распределяются между полигонами. Тем не менее, запрос, который я выполняю, возвращает сумму, которая больше, чем число, которое я должен иметь.
Для этого у меня сначала есть таблица, в которой перечислены все точки, и столбец, в котором указано, выполняется ли условие (таблица2).
У меня также есть таблица со всеми полигонами (таблица1).
Две таблицы имеют одинаковую геометрию (3798).
Затем я использовал st_instersects (geom1, geom1) и count (), чтобы узнать, сколько точек в каждом многоугольнике.
Я также попробовал st_within, но такая же проблема возникает.
SELECT table1.id, table1.name, count(table2.id) AS condition_met, table1.geom INTO newtable
FROM table1, table2
WHERE st_within(table1.geom, table2.geom) AND (table2.var = 4 OR table2.var = 5)
GROUP BY table1.id, table1.name, table1.geom;
Все запросы работают, но. У меня есть множество наблюдений для каждого многоугольника, в котором есть точки, которые удовлетворяют условию. Однако, когда я перепроверяю большое количество наблюдений, наблюдений оказывается слишком много, чем предполагается.
Это запрос, который я использовал для суммирования общего количества наблюдений в таблице 1 (многоугольник):
SELECT SUM(condition_met) FROM table2.
Я думал, что есть дубликаты, но не нашел их.
Я почти уверен, что это простая ошибка, но я не могу ее найти, так как я новичок в postgis. Большое спасибо за вашу помощь!