Я пытаюсь подсчитать долю точек, удовлетворяющих определенному условию в каждом многоугольнике. Я знаю, сколько всего наблюдений удовлетворяет условию, и я хочу знать, как они распределяются по полигонам. Однако выполняемый мной запрос возвращает сумму, превышающую предполагаемое число.
Для этого у меня сначала есть таблица, в которой перечислены все точки, и столбец, в котором указано, выполняется ли условие (таблица2).
У меня также есть таблица со всеми полигонами (table1).
Две таблицы имеют одинаковую геометрию (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. Большое спасибо за вашу помощь!