[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