[OBM Admin] grid modul

Bán Miklós banm at vocs.unideb.hu
Wed Nov 21 08:21:14 CET 2018


Kapcsolódó SQL lekérdezés példa beállítás:

SELECT d.obm_id, %grid_geometry% AS obm_geometry %selected%
FROM %F%dinpi d%F%
   %grid_join%
   %rules_join%
   %taxon_join%
   %morefilter%
WHERE %geometry_type% %envelope% %qstr%


On Mon, 19 Nov 2018 16:29:05 +0100
Bán Miklós <banm at vocs.unideb.hu> wrote:

> 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