[OBM Admin] grid modul
Bán Miklós
banm at vocs.unideb.hu
Mon Nov 19 16:29:05 CET 2018
Sziasztok,
a grid modulhoz némi tutorial:
Beállítás admin felületen (projekt admin -> modulok):
2x hozzáadtam, azaz két sorban szerepel egymás alatt a modul az alábbi
beállításokkal:
grid_view (everybody):
layer_options:utm_10 (polygon_layer),utm_100 (polygon_layer)
grid_view (logined users):
layer_options:kef_5 (polygon_layer), utm_2.5 (polygon_layer), utm_10
(polygon_layer), utm_100 (polygon_layer), original
(point_layer,polygon_layer)
Azért van kétszer, mert más grid opciók elérhetők a bejelentkezett
felhasználóknak és a többieknek.
Az opciók egyesével az engedélyezett, elérhető gridek. A legelső az
alapértelmezett grid. Az opciók felépítése a következő: grid-neve
(mapserver réteg név ahol megjelenik). A grid neve a
projekttabla_qgrids tábla egyes oszlopainak a neve.
A fenti példában látszik, hogy az original grid esetén, ami az eredeti
geometriák megjelenítését jelenti két mapserver réteget is használ,
mivel itt pont és polygon geometriák is vannak, a többi esetben csak
egy polygon réteget használ.
.._qgrids tábla felépítésére egy példa:
CREATE TABLE dinpi_qgrids (
row_id integer NOT NULL,
kef_5 geometry,
kef_10 geometry
"utm_2.5" geometry,
utm_10 geometry,
utm_100 geometry,
original geometry,
);
COMMENT ON COLUMN dinpi_qgrids.kef_5 IS 'KEF 5x5';
COMMENT ON COLUMN dinpi_qgrids.kef_10 IS 'KEF 10x10';
COMMENT ON COLUMN dinpi_qgrids."utm_2.5" IS 'UTM 2.5';
COMMENT ON COLUMN dinpi_qgrids.utm_10 IS 'UTM 10';
COMMENT ON COLUMN dinpi_qgrids.utm_100 IS 'UTM 100';
COMMENT ON COLUMN dinpi_qgrids.original IS 'original';
ALTER TABLE ONLY dinpi_qgrids
ADD CONSTRAINT dinpi_qgrids_pkey PRIMARY KEY (row_id);
Az oszlop megjegyzéseknek nagy jelentősége van, mert ezeket írja ki a
modul a kiválasztó listába mint címke, amivel lehet gridet választani.
A grideket egy trigger írja be a táblába amit egyedileg módosítani
kell, de ez egy jó kiindulás:
BEGIN
IF tg_op = 'INSERT' THEN
EXECUTE format('INSERT INTO %I_qgrids (row_id,original) SELECT
%L,%L::geometry',TG_TABLE_NAME,NEW.obm_id,NEW.obm_geometry);
EXECUTE format('UPDATE %I_qgrids SET "kef_5" = foo.geom FROM (
SELECT geometry AS geom
FROM shared."kef_5x5"
WHERE st_within(%L::geometry,geometry)
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "kef_10" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."kef_10x10"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_2.5" =
st_transform(foo.geom,4326) FROM ( SELECT geometry as geom
FROM shared."utm_2.5x2.5"
WHERE st_within(%L::geometry,st_transform(geometry,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_10" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."utm_10x10"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_100" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."utm_100x100"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
RETURN NEW;
END IF;
IF tg_op = 'UPDATE' THEN
EXECUTE format('UPDATE %I_qgrids SET "original"=%L::geometry WHERE
row_id=%L', TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "kef_5" = foo.geom FROM (
SELECT geometry AS geom
FROM shared."kef_5x5"
WHERE st_within(%L::geometry,geometry)
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "kef_10" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."kef_10x10"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_2.5" =
st_transform(foo.geom,4326) FROM ( SELECT geometry as geom
FROM shared."utm_2.5x2.5"
WHERE st_within(%L::geometry,st_transform(geometry,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_10" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."utm_10x10"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
EXECUTE format('UPDATE %I_qgrids SET "utm_100" =
st_transform(foo.geom,4326) FROM ( SELECT geom
FROM shared."utm_100x100"
WHERE st_within(%L::geometry,st_transform(geom,4326))
) as foo WHERE
row_id=%L',TG_TABLE_NAME,NEW.obm_geometry,NEW.obm_id);
RETURN NEW;
END IF;
IF tg_op = 'DELETE' THEN
EXECUTE format('DELETE FROM %I_qgrids WHERE
row_id=%L',TG_TABLE_NAME,OLD.obm_id); RETURN OLD;
END IF;
END;
--
Miklós Bán, PhD
MTA-DE Behavioural Ecology Research Group
Department of Evolutionary Zoology, University of Debrecen
H-4010 Debrecen, Egyetem tér 1.
Phone: +36 52 512-900 ext. 62357
http://zoology.unideb.hu/@Miklos_Ban
OpenBioMaps
https://openbiomaps.org
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the Administrator
mailing list