Пункт 3 можно сделать используя PostgreSQL/PostGIS. Запрос на подсчет статистики будет следующий:
Код: Выделить всё
SELECT
m."nam",
COUNT(*) AS pointcount,
SUM(data) AS pointsum,
AVG(data) AS pointavg
FROM
"point" AS r,
"buffer" AS m
WHERE ST_Intersects(m.the_geom, r.the_geom)
GROUP BY m."nam"
где point - точечный слой с значениями в поле data; buffer - полигональный слой регулярной сетки с именем ячейки nam. pointcount - количество точек в ячейке, pointsum - сумма значений точек в ячейке, pointavg - среднее значение точек для ячейки.
Для записи значений в слой регулярной сетки необходимо сделать:
- добавить колонки для записываемых значений
Код: Выделить всё
ALTER TABLE "buffer" ADD COLUMN pointcount INTEGER;
ALTER TABLE "buffer" ADD COLUMN pointsum NUMERIC (20, 2);
ALTER TABLE "buffer" ADD COLUMN pointavg NUMERIC (20, 2);
- выпонить запрос для записи вычисляемых значений:
Код: Выделить всё
UPDATE "buffer" t
SET
pointcount =calc.pointcount,
pointsum =calc.pointsum,
pointavg =calc.pointavg
FROM (
SELECT
m."nam",
COUNT(*) AS pointcount,
SUM(data) AS pointsum,
AVG(data) AS pointavg
FROM
"point" AS r,
"buffer" AS m
WHERE ST_Intersects(m.the_geom, r.the_geom)
GROUP BY
m."nam"
) calc
WHERE t."nam" = calc."nam";
Пункт 4 - сделать соответствующую классификацию значений в свойствах - стиль слоя регулярной сетки.