Modulok¶
A modulok az OpenBioMaps webalkalmazás konfigurálható bővítményei. Hozzáadhatnak felhasználói felületi elemeket, adatfeldolgozási funkciókat, exportformátumokat, adminisztrációs eszközöket, API-kat vagy külső szolgáltatásokkal való integrációkat.
A moduloknak két fő hatóköre van:
A projektszintű modulok a teljes projektre vonatkozó funkciókat biztosítanak, például térbeli alakzatok kezelését, csatolmányok támogatását vagy PostgreSQL-felhasználók létrehozását.
A táblaszintű modulok egy adott adattáblára vonatkoznak, például a térképoldal szűrőire, az eredmények megjelenítésére, adatátalakításokra vagy exportformátumokra.
A modulok az alkalmazás hookjaihoz kapcsolódnak. A legtöbb felhasználói hook a térképoldalon és a profiloldalon található, de a modulok adminisztrációs oldalakat, API-kat, háttérfeladatokat és feltöltéshez kapcsolódó funkciókat is hozzáadhatnak.
A legtöbb modul JSON formátumú paramétereket fogad. Egyes modulok ehelyett külön adminisztrációs felületet biztosítanak, mások pedig JSON-paramétereket és további adatbázis- vagy MapServer-konfigurációt egyaránt igényelnek.
Verziókompatibilitás: Az elérhető modulok és paramétereik változhatnak az OpenBioMaps kiadásai között. A telepített alkalmazás moduladminisztrációs oldala tartalmazza a projekt számára elérhető modulok irányadó listáját. Mielőtt egy másik telepítésből konfigurációt másolna át, ellenőrizze a modul forrását és a kiadási megjegyzéseket.
Moduladminisztráció¶
A modulok a Projektadminisztráció → Modulok oldalon engedélyezhetők és konfigurálhatók.
Egy modul általában:
hozzáadható a projekthez;
felhasználókhoz vagy csoportokhoz rendelhető;
JSON-paraméterekkel konfigurálható;
engedélyezhető vagy letiltható; valamint
megnyitható egy modulspecifikus adminisztrációs oldalon, ha van ilyen.
A modulnevek és a JSON-kulcsok megkülönböztetik a kis- és nagybetűket. Mentés előtt ellenőrizze a JSON érvényességét. A JSON nem engedélyez megjegyzéseket vagy záró vesszőket.
Egyéni modul hozzáadása¶
Egyéni modulok tölthetők fel és adhatók hozzá a projekthez. A fejlesztőknek a resources/includes/modules/examples/ könyvtárban található példamodulokat kell kiindulási alapként használniuk, és össze kell hasonlítaniuk azok megvalósítását a telepített OpenBioMaps-kiadásban szereplő modulokkal.
Az egyéni modulok kódját üzembe helyezés előtt felül kell vizsgálni. A modul az alkalmazás részeként fut, és hozzáférhet a projekt adataihoz, a hitelesített felhasználó munkamenetéhez és az adatbázis-kapcsolatokhoz.
Modul-hozzáférés¶
Ugyanaz a modul többször is hozzáadható eltérő hozzáférési beállításokkal vagy paraméterekkel. Ez lehetővé teszi az adminisztrátorok számára, hogy különböző konfigurációkat biztosítsanak különböző felhasználókhoz, csoportokhoz vagy táblákhoz.
Például:
az
allowed_columnskülönböző oszlopokat tehet elérhetővé különböző csoportok számára; ésa
text_filtertáblaspecifikus szűrőoszlopokat biztosíthat egy több adattáblát tartalmazó projektben.
Az Access oszlop határozza meg egy modulpéldány általános célközönségét. Az elérhető lehetőségek közé tartozik a nyilvános hozzáférés és a bejelentkezett felhasználókra korlátozott hozzáférés.
A Group access oszlop tovább korlátozza a modulpéldányt a kiválasztott projektcsoportokra vagy egyéni felhasználókra.
Ha ugyanannak a modulnak több példánya is vonatkozik egy felhasználóra, tesztelje, hogy a telepített OpenBioMaps-verzió melyik konfigurációt választja ki, illetve mely konfigurációkat egyesíti. Kerülje az egymást átfedő hozzáférési szabályokat, hacsak nem ismert a működésük.
Modulok engedélyezése és letiltása¶
Minden konfigurált modulpéldány engedélyezhető vagy letiltható. Egy modul letiltása megőrzi annak konfigurációját, de megakadályozza a használatát.
Egy modul állapotának módosítása után tesztelje az érintett oldalt minden érintett hozzáférési csoport felhasználóival. Egyes modulok adatbázis-objektumokat is létrehoznak, vagy letiltásuk után is megőrzik modulspecifikus beállításaikat.
Modulok eltávolítása¶
A moduladminisztrációs felület jelenleg nem biztosít általános lehetőséget egy telepített modul alkalmazásból való eltávolítására.
Egy konfigurált modulpéldány letiltható. Ne törölje kézzel a modul fájljait vagy adatbázis-objektumait, kivéve, ha ismert a modul eltávolítási eljárása, és rendelkezésre áll biztonsági mentés.
Modulparaméterek¶
A legtöbb modul közvetlenül a moduladminisztrációs oldalon fogad JSON-paramétereket. Más modulok külön adminisztrációs lapot biztosítanak a modulspecifikus feladatokhoz. A box_load_selection példa egy saját adminisztrációs felülettel rendelkező modulra.
A dokumentumban szereplő példák olyan helyőrzőket használnak, mint a YOURTABLE, a column_name és a schema.table. Cserélje le ezeket a helyőrzőket a projekt azonosítóira.
Projektszintű modulok¶
box_load_selection¶
A box_load_selection modul újrafelhasználható térbeli alakzatokat kezel.
A következő funkciókat biztosítja:
A felhasználók pontokat, vonalakat és poligonokat tölthetnek fel. Az ESRI Shapefile általánosan használt formátum, de más szabványos térbeli formátumok is támogatottak lehetnek.
A feltöltött alakzatok felhasználhatók egy adatlekérdezés térbeli kiterjedésének meghatározására.
Egy alakzat megadhatja egy rekord geometriáját webes vagy fájlból történő feltöltés során.
Az alakzatok megoszthatók más felhasználókkal.
A felhasználó számára elérhető alakzatokat a mobilalkalmazás letöltheti és megjelenítheti.
Az újonnan feltöltött alakzatok alapértelmezés szerint nem láthatók más felhasználók számára. A projektadminisztrátorok minden alakzat esetében jogosultságot adhatnak a felhasználóknak annak lekérdezésekhez vagy adatfeltöltésekhez való használatára.
A felhasználók a profiloldaluk Megosztott geometriák modulblokkjában kezelhetik a megosztott alakzatokat. A projektadminisztrátorok a box_load_selection adminisztrációs lapján kezelhetik ezeket a jogosultságokat.
A modul engedélyezésekor egy Térbeli lekérdezés mező jelenik meg a térképoldalon. A felhasználók kiválaszthatnak egy elérhető alakzatot, és térbeli lekérdezést futtathatnak rajta. Poligongeometriák esetén a felület lehetővé teheti annak kiválasztását, hogy a poligon határát metsző rekordok szerepeljenek-e a lekérdezésben.
Ha egy feltöltési űrlap obm_geometry mezőt használ, annak térképvezérlője felkínálhatja a Geometria listából lehetőséget. Egy elnevezett alakzat kiválasztása beilleszti annak WKT-geometriáját a feltöltési mezőbe.
A mobilalkalmazás a feltöltéshez elérhető alakzatokat félig átlátszóan, a nevükkel feliratozva jelenítheti meg az űrlapok térképein.
Paraméterek: Nincsenek. A modul a saját adminisztrációs felületét használja.
photos¶
A photos modul engedélyezi a fénykép- és egyéb csatolmán mezőket a feltöltési űrlapokon, és megjeleníti a csatolt képeket a rekordok adatlapjain.
A fájlméretkorlátokat, az engedélyezett fájltípusokat, a tárolást, a hozzáférés-vezérlést és a biztonsági mentési követelményeket az alkalmazás és a kiszolgáló szintjén is konfigurálni kell.
Paraméterek: Nincsenek.
create_pg_user¶
A create_pg_user modul lehetővé teszi a jogosult felhasználók számára személyes PostgreSQL-fiókok létrehozását.
A modul engedélyezésekor:
egy PostgreSQL-felhasználó létrehozása mező jelenik meg a jogosult felhasználók profiloldalán;
a felhasználók létrehozhatják és megújíthatják saját adatbázis-fiókjukat;
a létrehozott fiók hozzá lesz rendelve a projekt PostgreSQL-felhasználói csoportjához; valamint
a fiók adatbázis-kliensekkel, például QGIS-szel használható.
Alapértelmezés szerint a létrehozott fiók:
olvasási hozzáféréssel rendelkezik a projekt adatbázistábláihoz;
egyidejűleg egy klienskapcsolatra korlátozott; és
egy év után lejár.
A létrehozott fiók hozzá lesz adva a projektről elnevezett PostgreSQL-csoporthoz, amelynek formája általában PROJECT_user. Egy adatbázis-adminisztrátor további jogosultságokat adhat, például írási hozzáférést bizonyos táblákhoz, de a legkisebb jogosultság elvét kell követnie.
A felhasználók a lejárat előtt vagy után megújíthatják hozzáférésüket, a telepített modul szabályainak megfelelően.
A következő képernyőkép egy példa PostgreSQL/PostGIS-kapcsolatot mutat be QGIS-ben:
Ne tegye elérhetővé a PostgreSQL-t a nyilvános interneten megfelelő tűzfal-, TLS-, hitelesítési és hozzáférés-vezérlési beállítások nélkül.
Paraméterek: Nincsenek. A jelenlegi kiadások külön adminisztrációs oldalt biztosíthatnak.
computation¶
A computation modul projektspecifikus számítási funkciókat biztosít.
Pontos működése a telepített modulverziótól és a projekt konfigurációjától függ. Éles projektben való engedélyezés előtt vizsgálja felül a modul megvalósítását.
Paraméterek: Nincsenek dokumentálva.
custom_filetype¶
A custom_filetype modul támogatja projektspecifikus egyéni letöltési formátumok, például Observado-stílusú CSV-fájlok előállítását.
A kimeneti formátum és minden szükséges egyéni megvalósítás a projekttől függ.
Paraméterek: Nincsenek dokumentálva.
taxon_meta¶
A taxon_meta modul taxonokkal kapcsolatos metaadat-funkciókat biztosít.
Felhasználói felületét, szükséges adatbázis-struktúráját és konfigurációját a telepített modulverzió alapján kell ellenőrizni.
Paraméterek: Nincsenek dokumentálva.
Táblaszintű modulok¶
additional_columns¶
Az additional_columns modul több adattáblában található rekordok összekapcsolásához használt oszlopokat határoz meg.
Ha a táblák közös azonosítóval kapcsolódnak egymáshoz, a lekérdezések az adott azonosítóhoz tartozó kapcsolódó rekordokat is tartalmazhatják. A felhasználók a térképoldalon található Táblakapcsolások figyelmen kívül hagyása lehetőség kiválasztásával megkerülhetik ezeket a kapcsolásokat.
Egy projekt például külön táblákban tárolhatja a szülő- és utódrekordokat, és közös kotorékazonosítót használhat kapcsolóoszlopként.
Ezt a modult a join_tables modullal együtt használja.
A modul a következőket adja vissza:
oszlopok tömbjét a
0indexen; ésoszlopnevek asszociatív tömbjét az
1indexen.
Paraméterek:
[
"column_name_1",
"column_name_2"
]
allowed_columns¶
Az allowed_columns modul oszlopszintű korlátozásokkal egészíti ki a sorszintű adathozzáférési szabályokat.
A sorszintű szabályok határozzák meg, hogy a felhasználó mely rekordokhoz férhet hozzá. Ez a modul határozza meg, hogy mely oszlopok maradnak láthatók, amikor egy rekord restricted vagy no-geom szabály hatálya alá esik, illetve amikor nincs egyező szabály.
A modul olyan projektekhez készült, amelyek alapszintű hozzáférése nem nyilvános, és amelyek adattáblái a megfelelő szabálytáblát használják.
Paraméterek:
{
"for_sensitive_data": [
"column_visible_for_sensitive_records"
],
"for_no-geom_data": [
"column_visible_for_records_without_geometry_access"
],
"for_general": [
"column_visible_when_no_rule_matches"
]
}
A paraméterek jelentése:
A
for_sensitive_dataaz érzékeny rekordok esetében látható oszlopokat sorolja fel.A
for_no-geom_dataano-geomrekordok esetében látható oszlopokat sorolja fel. Ha ez a kulcs hiányzik, azoknál a rekordoknál minden oszlop hozzáférhető.A
for_generalazokat az oszlopokat sorolja fel, amelyek akkor láthatók, ha egyetlen szabály sem illeszkedik. Ha ez a kulcs hiányzik, ebben az esetben minden oszlop korlátozott.
Tesztelje a tényleges jogosultságokat nyilvános, hitelesített, csoporttag és adminisztrátori fiókokkal. Az oszlopkorlátozások nem helyettesítik a megfelelő adatbázis- és API-hozzáférés-vezérlést.
bold_yellow¶
A bold_yellow modul azonosítja az eredmény-összefoglalók fontos mezőit.
A konfigurált oszlopok félkövér sárga kiemeléssel jelennek meg a részletes eredménylistákban. A mobilalkalmazás ezt a konfigurációt használja az Összegyűjtött adatok összefoglaló címkéiben megjelenő értékek kiválasztására is.
Paraméterek:
[
"column_name_1",
"column_name_2"
]
box_load_coord¶
A box_load_coord modul egy Pozíció blokkot ad a térkép alá.
A blokk:
megjeleníti a mutató aktuális helyének koordinátáit; és
lehetővé teszi a felhasználó számára szélességi és hosszúsági értékek megadását, valamint a megfelelő pont térképen való elhelyezését.
A paraméterek a koordináta-rendszerek felhasználóknak megjelenő neveit EPSG-kódokhoz rendelik.
Paraméterek:
{
"wgs84": "4326",
"eov": "23700"
}
Csak a projekt és térképi összetevői által támogatott koordináta-rendszereket konfiguráljon.
box_load_last_data¶
A box_load_last_data modul egy Gyors lekérdezések mezőt ad a térképoldalhoz.
A következő lekérdezéseket biztosítja:
az aktuális felhasználó legutóbbi feltöltése;
bármely felhasználó legutóbbi feltöltése; és
a legutóbb feltöltött rekordok.
Az első két lehetőség egy rekordot ad vissza. A paraméter a harmadik lehetőség által visszaadott rekordok számát szabályozza. A dokumentált alapértelmezett érték 10.
Paraméterek:
[
10
]
box_custom¶
A box_custom modul egy projektspecifikus egyéni mezőt tölt be a térképoldalon.
Az egyéni megvalósítást a projekt local/includes/modules/ könyvtárában kell elhelyezni. Az osztályának legalább a print_box() és print_js() metódusokat biztosítania kell.
A következő helyen tárolt egyéni modul esetében:
local/includes/modules/hrsz_query.php
a paraméter a fájl alapnevét tartalmazza:
[
"hrsz_query"
]
A megfelelő osztály elvárt neve hrsz_query_Class.
Az egyéni modulkódnak ellenőriznie kell a bemeneteket, escape-elnie kell a kimenetet, érvényesítenie kell a jogosultságokat, és paraméterezett adatbázis-lekérdezéseket kell használnia.
identify_point¶
Az identify_point modul lehetővé teszi a felhasználók számára egy vagy több pont azonosítását a térképen, és megjeleníti a kiválasztott attribútumértékeket egy térképi felugró ablakban.
Paraméterek:
[
"column_name_1",
"column_name_2"
]
Csak olyan oszlopokat adjon meg, amelyekhez a modul célközönsége jogosult hozzáférni.
cameratrap_api¶
A cameratrap_api modul kommunikációt biztosít egy kameracsapda-irányítópult és a Nextcloud API között.
Funkciói a következők:
kamerák és elemzések kezelése;
képek fel- és letöltése;
elemzések indítása; és
az integrációhoz szükséges Nextcloud-hitelesítő adatok kezelése.
A modul modulspecifikus adatbázis-objektumokat hoz létre vagy használ. Engedélyezése előtt vizsgálja felül az SQL-telepítőfájlját és hozzáférési követelményeit.
Paraméterek: Nincsenek dokumentálva.
nextcloud_connect¶
A nextcloud_connect modul összekapcsolja az OpenBioMaps rendszert egy Nextcloud-kiszolgálóval. Felhasználóiprofil-integrációt biztosít, és JWT-tokeneket bocsát ki hitelesítéshez.
A Nextcloud URL-jeit, hitelesítő adatait, aláírási titkait, tokenjeinek élettartamát és TLS-ellenőrzését biztonságosan, a telepített kiadás által elvárt mechanizmusokon keresztül kell konfigurálni.
Paraméterek: Nincsenek dokumentálva.
validation¶
A validation modul belső API-t és adminisztrációs felületet biztosít az adatérvényesítési algoritmusokhoz.
Funkciói a következők:
érvényesítési szabályok kezelése;
rekordok érvényesítése; és
érvényesítési műveletek naplózása.
A projektspecifikus érvényesítési megvalósítások további ellenőrzéseket végezhetnek a feltöltött adatokon.
Paraméterek: Nincsenek dokumentálva. A további szabályok a modul adminisztrációs felületén és az érvényesítési összetevőkön keresztül kezelhetők.
download_restricted¶
A download_restricted modul adminisztrátor által felügyelt letöltés-engedélyezési munkafolyamatot vezet be.
Az azonnali letöltési hozzáférés helyett a felhasználók kérelmet nyújtanak be, amelyben leírják az adatok tervezett felhasználását. Az adminisztrátorok a modul adminisztrációs felületén jóváhagyhatják vagy elutasíthatják a kérelmet.
A modul a következőket biztosítja:
letöltési kérelem űrlapja;
adminisztrátori jóváhagyási munkafolyamat; és
integráció a
results_buttonsmodullal.
A results_buttons modullal együtt használva az exportálási lehetőségek csak azoknak a felhasználóknak érhetők el, akiknek kérelme és jogosultságai engedélyezik a letöltést.
A modul engedélyezése nem szünteti meg a kiszolgálóoldali hozzáférés-ellenőrzések szükségességét. Tesztelje a közvetlen exportálási URL-eket és API-kat annak ellenőrzésére, hogy a letöltési korlátozások nem kerülhetők-e meg.
Paraméterek: Nincsenek. A modul a saját adminisztrációs felületét használja.
extra_params¶
Az extra_params bővítmény további bemeneti paramétereket biztosít az űrlapokhoz.
A bővítmény pontos szintaxisát és elérhetőségét a telepített OpenBioMaps-kiadás alapján kell ellenőrizni, mivel nem minden verzióban található meg ilyen nevű önálló modul.
Paraméterek: Itt nincs dokumentálva stabil paraméterformátum.
grid_view¶
A grid_view modul alternatív poligonrácsok használatával jeleníti meg az adatokat. Ilyenek például az UTM-rácsok, a KEF-rácsok, az illesztett pontok és a dinamikusan létrehozott rácspoligonok.
Amikor egy rácsnézet aktív, a modul által szolgáltatott geometria helyettesíti a rekord eredeti geometriáját az adott megjelenítésben.
A modul megvalósítása többek között a következő metódusokat teszi elérhetővé:
print_box();default_grid_geom(); ésget_grid_layer().
Paraméterek¶
{
"layer_options": [
"kef_5 (layer_data_grid)",
"original (layer_data_points)"
]
}
Minden layer_options bejegyzés egy geometriaoszlopot társít egy MapServer-réteghez:
a zárójel előtti szöveg a
YOURTABLE_qgridsegyik oszlopa; ésa zárójelen belüli szöveg a megfelelő MapServer-réteg neve.
A példában:
a
kef_5aYOURTABLE_qgridsgeometriaoszlopa;a
layer_data_grida megjelenítéséhez használt MapServer-poligonréteg;az
originala forrásgeometriát tárolja; ésa
layer_data_pointsaz eredeti pontokat jeleníti meg.
Egy rácsgeometriához kompatibilis MapServer-réteg szükséges. A layer_data_grid rétegnek például poligonrétegnek kell lennie, ha poligonrácsokat jelenít meg.
Rácstábla¶
A modul létrehozza a YOURTABLE_qgrids táblát, ha még nem létezik. A tábla ezután kibővíthető a projekthez szükséges geometriaoszlopokkal.
A modul létrehozhat egy update_grid_geoms triggert és kezdeti oszlopmegjegyzéseket is. Ezek a létrehozott objektumok általában projektspecifikus felülvizsgálatot és módosítást igényelnek.
Állítsa be a rácsbeállítások felhasználóknak megjelenő neveit oszlopmegjegyzésként:
COMMENT ON COLUMN public.YOURTABLE_qgrids.original IS 'Original';
COMMENT ON COLUMN public.YOURTABLE_qgrids.kef_5 IS 'KEF 5×5';
Az SQL-azonosítókat következetesen használja. Ne konfiguráljon például kef_5 értéket a modulban, ha az oszlopot kef5 néven hozza létre.
Trigger a rácstáblán¶
A következő példa egy projektspecifikus rácsfrissítő függvényt hív meg:
CREATE TRIGGER update_grid_geoms
BEFORE INSERT OR UPDATE ON public.YOURTABLE_qgrids
FOR EACH ROW
EXECUTE PROCEDURE public.update_qgrid_geoms_arg(
'0.1',
'0.1',
't',
't',
't',
't',
'0.05'
);
Fontos: A trigger argumentumainak száma és sorrendje pontosan meg kell, hogy egyezzen az
update_qgrid_geoms_arg()telepített definíciójával. Az alábbi korábbi példafüggvény aTG_ARGV[8]indexig olvas argumentumokat, míg a fenti példatrigger csak hét argumentumot ad át. Ne telepítse ezeket a példákat változtatás nélkül. Vizsgálja meg a telepítettgrid_view.sqlfájlt és az adatbázis-függvényt, majd adjon meg minden szükséges argumentumot.
Trigger a forrástáblán¶
A forrástáblához olyan trigger szükséges, amely átmásolja a változásokat a rácstáblába:
CREATE TRIGGER qgrids
BEFORE INSERT OR DELETE OR UPDATE ON public.YOURTABLE
FOR EACH ROW
EXECUTE PROCEDURE insert_originalgeom_into_qgrids();
Egy példafüggvény törzse:
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
);
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
);
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;
RETURN NULL;
END;
Ez csak egy triggerfüggvény törzse, nem teljes CREATE FUNCTION utasítás.
Rácsfrissítő függvény¶
A következő korábbi példa a tervezett műveleteket szemlélteti:
DECLARE
snap_x numeric := TG_ARGV[0];
snap_y numeric := TG_ARGV[1];
kef5 boolean := TG_ARGV[2];
utm10 boolean := TG_ARGV[5];
snap boolean := TG_ARGV[6];
snap_polygon boolean := TG_ARGV[7];
snap_polygon_size numeric := TG_ARGV[8];
BEGIN
IF TG_OP = 'UPDATE' THEN
IF kef5 THEN
EXECUTE format(
'SELECT geometry FROM shared."kef_5x5" WHERE ST_Within(%L::geometry, geometry)',
NEW.original
)
INTO NEW.kef_5;
END IF;
IF snap THEN
EXECUTE format(
'SELECT ST_SnapToGrid(%L::geometry, %L, %L)',
NEW.original,
snap_x,
snap_y
)
INTO NEW.snap;
END IF;
IF snap_polygon THEN
EXECUTE format(
'SELECT ST_Expand(ST_SnapToGrid(%L::geometry, %L, %L), %L)',
NEW.original,
snap_x,
snap_y,
snap_polygon_size
)
INTO NEW.snap_polygon;
END IF;
RETURN NEW;
END IF;
IF TG_OP = 'INSERT' THEN
IF kef5 THEN
EXECUTE format(
'SELECT geometry FROM shared."kef_5x5" WHERE ST_Within(%L::geometry, geometry)',
NEW.original
)
INTO NEW.kef_5;
END IF;
IF snap THEN
EXECUTE format(
'SELECT ST_SnapToGrid(%L::geometry, %L, %L)',
NEW.original,
snap_x,
snap_y
)
INTO NEW.snap;
END IF;
IF snap_polygon THEN
EXECUTE format(
'SELECT ST_Expand(ST_SnapToGrid(%L::geometry, %L, %L), %L)',
NEW.original,
snap_x,
snap_y,
snap_polygon_size
)
INTO NEW.snap_polygon;
END IF;
RETURN NEW;
END IF;
RETURN NEW;
END;
Ez szintén csak egy függvénytörzs. Az utm10 változó deklarálva van, de a bemutatott megvalósítás nem használja. Vizsgálja felül és egészítse ki a függvényt a projekt által igényelt rácstípusokhoz.
Kezdeti feltöltés¶
Miután a rácstábla és a triggerek elkészültek, a meglévő forrásgeometriák átmásolhatók egy üres rácstáblába:
INSERT INTO YOURTABLE_qgrids (row_id, original)
SELECT obm_id, obm_geometry
FROM YOURTABLE;
Példa egy illesztett geometria frissítésére:
UPDATE YOURTABLE_qgrids AS q
SET snap = source.snapped_geometry
FROM (
SELECT
obm_id,
ST_SnapToGrid(obm_geometry, 0.13, 0.09) AS snapped_geometry
FROM YOURTABLE
) AS source
WHERE q.row_id = source.obm_id;
Példa egy megosztott rácstáblából származó poligonok használatával végzett frissítésre:
UPDATE YOURTABLE_qgrids AS q
SET kef_5 = source.grid_geometry
FROM (
SELECT
data.obm_id,
grid.obm_geometry AS grid_geometry
FROM YOURTABLE AS data
LEFT JOIN shared.kef_5x5 AS grid
ON ST_Within(data.obm_geometry, grid.obm_geometry)
) AS source
WHERE q.row_id = source.obm_id;
Ebben a példában a shared.kef_5x5 tartalmazza az előre meghatározott rácspoligonokat. Más geometria, például a snap, dinamikusan is létrehozható.
A sémamódosításokat és tömeges frissítéseket először tesztkörnyezetben futtassa. Készítsen biztonsági mentést az adatbázisról, ellenőrizze a térbeli indexeket, valamint a null, érvénytelen, határvonalon fekvő és nem pont típusú geometriák kezelését.
job_manager érvényesítési feladatok¶
Az érvényesítési feladatkezelő háttérfolyamatokat konfigurál egy projekthez.
Adminisztrációs oldalán az adminisztrátorok a következőket konfigurálhatják:
egyszerűsített ütemezés perc-, óra- és napértékekkel; valamint
feladatspecifikus paraméterek JSON formátumban.
Egy feladat hozzáadása regisztrálja azt a projekt feladattáblájában, és sablonfájlokat hozhat létre az érvényesítési modul és a feladatok könyvtáraiban.
Ennek az összetevőnek az elérhetősége és pontos neve a telepített érvényesítési modultól függhet. A háttérfeladatok csak akkor futnak, ha a projekt jobs.php futtatója ütemezve van a kiszolgálón.
Paraméterek: Háttérfeladat-nevek listája.
observation_lists¶
Az observation_lists feladat a mobilalkalmazás által feltöltött megfigyelési listákat dolgozza fel.
A feltöltött megfigyelések kezdetben egy ideiglenes táblába kerülnek. A feladat:
kitölti az
obm_observation_list_idértékét;kiszámítja vagy átmásolja a lista kezdetének, végének és időtartamának értékeit; valamint
a teljes listákat átmásolja a céltáblájukba.
A hiányos listákat kihagyja, hogy később dolgozza fel őket.
Feladatparaméterek:
list_start_column: a lista kezdetét tároló oszlop;list_end_column: a lista végét tároló oszlop;list_duration_column: az időtartamot tároló oszlop;only_time: csak az időt tárolja-e a teljes időbélyeg helyett;time_as_int: percekre alakítsa-e az időt vagy az időtartamot.
Példa:
{
"YOURTABLE": {
"list_start_column": "time_of_start",
"list_end_column": "time_of_end",
"list_duration_column": "duration",
"only_time": true,
"time_as_int": true
}
}
incomplete_observation_lists¶
Az incomplete_observation_lists feladat a hiányosan maradó listákat kezeli.
Ha a várt és a beérkezett megfigyelések száma közötti különbség a beállított tűréshatáron belül van, a listát a következő observation_lists futás feldolgozhatja, és a rendszer üzenetet küld.
Ha a különbség meghaladja a tűréshatárt, a feladat rendszerüzenetet küld, de a listát kézi feldolgozásra hagyja.
Feladatparaméterek:
mail_to: annak a szerepkörnek a numerikus azonosítója, amelynek tagjai megkapják az üzenetet;diff_tolerance: a megengedett különbség, amely felett kézi feldolgozás szükséges;days_offset: ennyi napot kell várni a hiányos lista feldolgozása előtt.
Példa:
{
"YOURTABLE": {
"mail_to": 1265,
"diff_tolerance": 2,
"days_offset": 2
}
}
Tesztelje az értesítések címzettjeit és a feladatok ütemezését, mielőtt éles környezetben erre a munkafolyamatra támaszkodna.
join_tables¶
A join_tables modul kapcsolódó rekordokat jelenít meg egy adatlapon.
A jelenleg dokumentált megvalósítás egyszerű LEFT JOIN műveleteket támogat, kapcsolt táblánként egy egyenlőségi feltétellel.
Paraméterek:
[
{
"table": "events",
"join_on": [
{
"ref_field": "obm_id",
"join_field": "patient_id"
}
]
},
{
"table": "measurements",
"join_on": [
{
"ref_field": "obm_id",
"join_field": "record_id"
}
]
}
]
Minden kapcsolt tábla esetében:
a
tablea kapcsolandó tábla;a
ref_fieldaz aktuális rekord mezője; ésa
join_fielda kapcsolt tábla egyező mezője.
Ahol szükséges, ezt a modult az additional_columns modullal együtt használja. Gondoskodjon a kapcsolómezők indexeléséről, és arról, hogy a felhasználók jogosultak legyenek minden kapcsolt tábla adataihoz hozzáférni.
list_manager¶
A list_manager modul az adatfeltöltésekhez és lekérdezésekhez használható újrafelhasználható kifejezéslistákat kezeli.
A következőket biztosítja:
listák létrehozása és szerkesztése;
listák adatbázistáblákhoz és -oszlopokhoz rendelése;
listatartalmak előállítása meglévő adatokból;
listaadatok tárolása az adatbázisban; és
felhasználói visszajelzés sikertelen listaművelet esetén.
A modul modális párbeszédpanelt használ a listaértékek szerkesztéséhez. Adminisztrációs funkcióihoz csak azok a felhasználók férjenek hozzá, akik jogosultak módosítani a feltöltési és lekérdezési szókészleteket.
Paraméterek: Nincsenek. A modul saját felhasználói felületét és modulspecifikus adatbázis-objektumait használja.
massive_edit¶
A massive_edit modul lehetővé teszi a jogosult felhasználóknak, hogy a térképoldalon kiválasztott több rekordot a fájlfeltöltési felületen keresztül szerkesszenek.
A tömeges módosítások sok rekordot érinthetnek. Ellenőrizze a jogosultságokat, készítsen biztonsági mentést, és tesztelje a szerkesztett fájlt egy kis kijelölésen, mielőtt nagyobb frissítést alkalmazna.
Paraméterek: Nincsenek.
move_project¶
A move_project modul egy másik OpenBioMaps-kiszolgálóra költöztet egy projektet.
Ez egy kísérleti modul. Használata előtt készítsen és ellenőrizzen biztonsági mentéseket, és ellenőrizze az alkalmazásverziók, adatbázis-bővítmények, projektfájlok, felhasználók, modulok, MapServer-konfigurációk és titkos adatok kompatibilitását a célkiszolgálón.
Paraméterek: Nincsenek dokumentálva.
read_table¶
A read_table modul egyedi hivatkozáson keresztül görgethető HTML-táblaként tesz elérhetővé egy SQL-táblát vagy -nézetet.
Paraméterek:
[
{
"table": "schema.table_name",
"label": "Displayed table name",
"orderby": "column_name"
}
]
Minden bejegyzés a következőket tartalmazza:
table: séma szerinti minősítéssel ellátott tábla- vagy nézetnév;label: a felhasználóknak megjelenő címke; ésorderby: az alapértelmezett rendezéshez használt oszlop.
Egy egyedi vagy nehezen kitalálható hivatkozás önmagában nem elegendő hozzáférés-vezérlés. Ellenőrizze, hogy a modul érvényesíti-e a kívánt projekt-, csoport- és rekordszintű jogosultságokat.
results_asList¶
A results_asList modul összecsukható, diákhoz hasonló bejegyzésekként jeleníti meg a lekérdezési eredményeket.
Paraméterek: Nincsenek.
results_asGPX¶
A results_asGPX modul GPX-fájlként exportálja a lekérdezési eredményeket.
Paraméterek:
{
"name": "name_column",
"description": [
"description_column_1",
"description_column_2"
]
}
A name oszlop adja a GPX-elem nevét. A description oszlopok értékei szerepelnek az elem leírásában.
Csak a telepített GPX-exportálóval kompatibilis geometriák exportálhatók.
results_asCSV¶
A results_asCSV modul CSV-fájlként exportálja a lekérdezési eredményeket.
Paraméterek:
{
"sep": ",",
"quote": "\""
}
A
sephatározza meg a mezők elválasztójelét.A
quotehatározza meg a mezőket közrefogó karaktert.
Olyan beállításokat válasszon, amelyek kompatibilisek az export megnyitására használt szoftverrel. Az exportnak továbbra is érvényesítenie kell minden alkalmazandó sor- és oszlopszintű hozzáférési szabályt.
results_asJSON¶
A results_asJSON modul JSON formátumban exportálja a lekérdezési eredményeket.
Paraméterek: Nincsenek.
results_asTable¶
A results_asTable modul teljes képernyős, minden elérhető mezőt tartalmazó HTML-táblaként jeleníti meg a lekérdezési eredményeket.
A következőket biztosítja:
teljes rekordmegjelenítés;
rendezhető oszlopok; és
rekordok megtekintésére vagy szerkesztésére szolgáló hivatkozások, ha a felhasználó rendelkezik a szükséges jogosultságokkal.
Minden elérhető mező megjelenítése nagy eredményhalmazok esetén erőforrás-igényes lehet, és olyan mezőket tehet hozzáférhetővé, amelyeket korlátozni kellene. Konfigurálja a hozzáférés-vezérlési modulokat, és minden felhasználói csoport esetében tesztelje a kimenetet.
Paraméterek: Nincsenek.
results_asKML¶
A results_asKML modul KML-fájlként exportálja a lekérdezési eredményeket.
Paraméterek:
{
"name": "name_column",
"description": [
"description_column_1",
"description_column_2"
]
}
A name oszlop adja a KML-elem nevét. A description oszlopok értékei szerepelnek az elem leírásában.
results_asStable¶
A results_asStable modul kompakt, rendezhető eredménytáblát jelenít meg a térképoldalon.
A teljes eredménytáblával ellentétben csak a konfigurált oszlopokat jeleníti meg. A rekordok megtekintésére vagy szerkesztésére szolgáló hivatkozásokat is tartalmazhat, ha a felhasználó rendelkezik a szükséges jogosultságokkal.
Paraméterek:
[
"column_name_1",
"column_name_2"
]
A modulnév a korábbi results_asStable írásmódot használja; ne nevezze át a konfigurációban.
results_specieslist¶
A results_specieslist modul összesíti az aktuális lekérdezési eredményben előforduló fajokat.
A következőket jelenítheti meg:
fajnevek;
az egyes fajokhoz tartozó rekordok száma;
a rögzített egyedek száma; és
betűrendes vagy taxonómiai rendezési lehetőségek.
A fajnevekhez és egyedszámokhoz használt oszlopok a projekt sémájától és a modul megvalósításától függenek.
Paraméterek: Nincsenek dokumentálva.
results_summary¶
A results_summary modul megjeleníti az aktuális lekérdezés által visszaadott különálló rekordok teljes számát.
Együttműködik a hozzáférési szabályokkal, így a korlátozott rekordokat csak akkor számolja, ha a felhasználó jogosult hozzáférni azokhoz.
Már egy összesített darabszám is érzékeny információt fedhet fel. Tesztelje a modult korlátozott rekordokkal és minden releváns hozzáférési szinten.
Paraméterek: Nincsenek.
results_table¶
A results_table bővítmény teljes HTML-táblát hoz létre a lekérdezési eredményekből.
Az OpenBioMaps kiadásától függően ezt a funkciót más megvalósítási nevű modul, például a results_asTable vagy a results_asHtmlTable biztosíthatja. Pontosan azt a modulnevet használja, amely a telepített rendszer moduladminisztrációs oldalán szerepel.
Paraméterek: Nincsenek dokumentálva.
restricted_data¶
A restricted_data modul szabályalapú korlátozásokat alkalmaz a projekt adataira.
A projektnek megfelelően konfigurált hozzáférési szabályokkal és kapcsolódó adatbázis-objektumokkal kell rendelkeznie. Tesztelje a korlátozásokat a térképoldalon, az adatlapoldalon, az exportokban, az API-kon és a közvetlen modulhivatkozásokon keresztül.
Paraméterek: Nincsenek.
spa_integration¶
A spa_integration modul egy egyoldalas alkalmazást integrál egy OpenBioMaps-projekttel.
Modulspecifikus adminisztrációs beállításokat igényel. A konfiguráció után tesztelni kell az útválasztást, a hitelesítést, a jogosultságkezelést, a statikus erőforrások útvonalait és a közvetlen böngészőnavigációt.
Paraméterek: A modul adminisztrációs felületén kezelhetők.
text_filter¶
A text_filter modul szöveges szűrőket ad a térképoldalhoz és a lekérdezési API-hoz. A konfigurált oszlopok és szűrőoperátorok alapján állítja össze az SQL-lekérdezés szűrési részét.
Példa:
[
"common_name",
"obm_taxon",
"notes::colour_rings",
"obm_datum",
"obm_uploading_date",
"obm_uploader_user",
"data.abundance:nested(data.count):autocomplete",
"data.count:values():",
"obm_files_id",
"species::autocomplete"
]
A bejegyzések egy oszlophivatkozást és azt követő modulspecifikus módosítókat tartalmazhatnak, például:
autocomplete;values();nested(...); vagy::karakterekkel elválasztott címke vagy másodlagos mező.
A szintaxis tömör és verziófüggő. Gondosan másolja át az ismerten működő kifejezéseket, kizárólag megbízható adatbázis-azonosítókat használjon, és minden szűrőt teszteljen a térképoldalon és a lekérdezési API-n keresztül is.
text_filter2¶
A text_filter2 modul fejlett taxonómiai és általános szöveges szűrőket biztosít. A text_filter modulhoz hasonlóan feltételeket ad az SQL-lekérdezéshez.
Paraméterek:
{}
A további beállítások a modul felhasználói felületén vagy projektspecifikus konfigurációban kezelhetők.
transform_data¶
A transform_data modul átalakítja a rekordértékeket, mielőtt azok megjelennének az eredményterületeken vagy bekerülnének a támogatott exportokba.
Az elérhető átalakítások a következők:
geom: kattintható geometriahivatkozást hoz létre, amely megnyitja a helyet a térképen;geom_nolink: hivatkozás nélkül jeleníti meg az egyszerűsített WKT-t;geom_wkt: a szokásos WKT-ábrázolást jeleníti meg;date_yearonly: kinyeri az évet egy dátumból;translate: előre meghatározott szöveges állandókat fordít le a felhasználóknak megjelenő szövegre;obslistlink: hivatkozást hoz létre egy megfigyelésilista-azonosítóból; ésuplid: a modul által támogatott feltöltésazonosító-átalakítást alkalmazza.
Példa:
{
"obm_geometry": "geom",
"other_geometry": "geom_nolink",
"obm_uploading_id": "uplid",
"date_time_field": "date_yearonly",
"method": "translate",
"obm_observation_list_id": "obslistlink"
}
Minden kulcs egy adatbázis-oszlop, minden érték pedig az adott oszlopon alkalmazott átalakítás.
Az átalakítások a megjelenítést befolyásolják, az alapul szolgáló tárolt értéket nem. Ellenőrizze, hogy az átalakított hivatkozások és értékek nem fednek-e fel korlátozott adatokat.
További dokumentációt igénylő modulok¶
A jelenlegi OpenBioMaps-adattár olyan modulokat is tartalmaz, amelyek még nincsenek részletesen ismertetve ezen az oldalon. A telepített verziótól függően ezek a következők lehetnek:
custom_data_check;ebp;fill_stable_with_column;ioc_bird_list;natura2000;results_asHtmlTable;results_asPDF;results_asSHP;service_envimap;snap_to_grid; ésturnstile.
Ne következtessen egy modul működésére vagy paraméterformátumára kizárólag a fájlnevéből. Engedélyezés előtt vizsgálja felül a forrását, modulmetaadatait, SQL-telepítőfájlját, hozzáférés-ellenőrzéseit és adminisztrációs felületét.
Üzembe helyezési ellenőrzőlista¶
Mielőtt egy modult éles környezetben engedélyezne:
Ellenőrizze, hogy a modul szerepel-e a telepített OpenBioMaps-verzióban.
Ellenőrizze a JSON-paraméterek érvényességét.
Azonosítsa a szükséges modulokat, adatbázis-objektumokat, MapServer-rétegeket, feladatokat, külső szolgáltatásokat és PHP-bővítményeket.
Vizsgálja felül a modulhozzáférést és a csoporthozzáférést.
Tesztelje nyilvános, hitelesített, csoporttag és adminisztrátori fiókokkal.
Tesztelje a közvetlen URL-eket, exportokat és API-kat a hozzáférés-vezérlés megkerülhetőségének ellenőrzésére.
Ellenőrizze az alkalmazás, a PHP, a PostgreSQL és a háttérfeladatok naplóit.
Készítsen biztonsági mentést a projektről, mielőtt adatbázis-objektumokat módosító vagy tömeges frissítéseket végző modulokat engedélyezne.
Dokumentálja a konfigurációt, valamint a modul letiltásának vagy visszaállításának eljárását.
Ismételje meg a teszteket az OpenBioMaps frissítése után.