Een kunstwerk(deel) is een civieltechnisch werk voor de infrastructuur van wegen, water, spoorbanen,waterkeringen en/of leidingen, niet bedoeld voor permanent menselijk verblijf. In relatie met een watersysteem moet je daarbij denken aan gemaaltjes, stuwen, duikers, sluisjes, etc. Hoe zou een kunstwerkdeel in een basisregistratie water ondergebracht kunnen worden?
Het detailniveau van waterdelen en kunstwerkdelen wordt in de Basisregistratie Grootschalige Topografie (BGT) globaal maar wel met een onderling vergelijkbaar detailniveau beschreven (waarbij er wel een vervelende mix is van verplichte- en optionele onderdelen).
Deze BGT specificaties zijn het vertrekpunt voor een waterbeheerder, die de BGT data met zo min mogelijk aanpassingen zal willen overnemen in een eigen registratie (keep-it-simple is daarbij het adagio). Het ER-diagram van demo.kunstwerkdeel kan er bijvoorbeeld zo uitzien:
Het dataobject demo.kunstwerkdeel erft een aantal basiseigenschappen en -functionaliteiten (net als demo.waterdeel) van demo.fysiekobject en (buiten beeld) demo.object.
De bijbehorende DDL is als volgt:
Met de data die de BGT voor een proefgebied levert als uitgangspunt zijn onderstaande domeinwaarden vooraf verzameld en in de database beschikbaar gemaakt:
Dit is veel beperkter dan de officiƫle Aquo-standaard, maar het dekt de lading.
Net zo als voor ieder dataobject worden er een aantal standaard triggers gemaakt:
Merk op dat er (net als bij waterdeel) telkens twee INSERT en UPDATE triggers zijn, die per definitie altijd in alfabetische volgorde afgehandeld worden.
De a-trigger zorgt voor het automatisch aanmaken van een representatieve (punt) locatie van een kunstwerkdeel (meestal het zwaartepunt van de BGT punt-, lijn- of vlak geometrie).
Beide a- (update) triggers staan standaard op DISABLED. Dat betekent dat de locatie bij een update actie in principe niet automatisch wordt herberekend.
Na het inregelen van bovenstaande opzet zijn voor het proefgebiedje ongeveer 17.350 kunstwerkdelen uit de BGT in DEMO geladen. Dat ziet er zo uit:
Het dataobject demo.kunstwerkdeel erft een aantal basiseigenschappen en -functionaliteiten (net als demo.waterdeel) van demo.fysiekobject en (buiten beeld) demo.object.
De bijbehorende DDL is als volgt:
CREATE TABLE public.kunstwerkdeel (
bgtobject varchar NULL,
code varchar NULL,
typekunstwerk typekunstwerk NULL,
typeregelbaarheid typeregelbaarheid NULL,
soortmateriaal soortmateriaal NULL,
maatgevendehoogte numeric(6,3) NULL,
geometrie geometry NULL,
CONSTRAINT typekunstwerk_pk PRIMARY KEY (object_pk)
)
INHERITS (public.fysiekobject);
|
Met de data die de BGT voor een proefgebied levert als uitgangspunt zijn onderstaande domeinwaarden vooraf verzameld en in de database beschikbaar gemaakt:
typekunstwerk
|
bodemval
|
typekunstwerk
|
duiker
|
typekunstwerk
|
gemaal
|
typekunstwerk
|
sluis
|
typekunstwerk
|
steiger
|
typekunstwerk
|
strekdam
|
typekunstwerk
|
stuw
|
typekunstwerk
|
vispassage
|
typeregelbaarheid
|
automatisch op afstand
|
typeregelbaarheid
|
automatisch
|
typeregelbaarheid
|
handmatig
|
typeregelbaarheid
|
niet
|
typeregelbaarheid
|
regelbaar
|
soortmateriaal kunstwerk
|
beton
|
soortmateriaal kunstwerk
|
hout
|
soortmateriaal kunstwerk
|
kunststof
|
soortmateriaal kunstwerk
|
metselwerk
|
soortmateriaal kunstwerk
|
staal
|
Dit is veel beperkter dan de officiƫle Aquo-standaard, maar het dekt de lading.
Net zo als voor ieder dataobject worden er een aantal standaard triggers gemaakt:
--DROP TRIGGER a_kunstwerkdeel_insert ON kunstwerkdeel;
CREATE TRIGGER a_kunstwerkdeel_insert
BEFORE INSERT
ON public.kunstwerkdeel
FOR EACH ROW
EXECUTE PROCEDURE public.fysiekobject_upsert();
--DROP TRIGGER b_kunstwerkdeel_insert ON kunstwerkdeel;
CREATE TRIGGER b_kunstwerkdeel_insert
BEFORE INSERT
ON public.kunstwerkdeel
FOR EACH ROW
EXECUTE PROCEDURE public.object_insert('nsDEMO');
--DROP TRIGGER a_kunstwerkdeel_update ON kunstwerkdeel;
CREATE TRIGGER a_kunstwerkdeel_update
BEFORE UPDATE
ON public.kunstwerkdeel
FOR EACH ROW
EXECUTE PROCEDURE public.fysiekobject_upsert();
ALTER TABLE kunstwerkdeel DISABLE TRIGGER a_kunstwerkdeel_update;
--ALTER TABLE kunstwerkdeel ENABLE TRIGGER a_kunstwerkdeel_update;
--DROP TRIGGER b_kunstwerkdeel_update ON kunstwerkdeel;
CREATE TRIGGER b_kunstwerkdeel_update
BEFORE UPDATE
ON public.kunstwerkdeel
FOR EACH ROW
EXECUTE PROCEDURE public.object_update();
--DROP TRIGGER kunstwerkdeel_delete ON kunstwerkdeel;
CREATE TRIGGER kunstwerkdeel_delete
BEFORE DELETE
ON public.kunstwerkdeel
FOR EACH ROW
EXECUTE PROCEDURE public.object_delete();
|
Merk op dat er (net als bij waterdeel) telkens twee INSERT en UPDATE triggers zijn, die per definitie altijd in alfabetische volgorde afgehandeld worden.
De a-trigger zorgt voor het automatisch aanmaken van een representatieve (punt) locatie van een kunstwerkdeel (meestal het zwaartepunt van de BGT punt-, lijn- of vlak geometrie).
Beide a- (update) triggers staan standaard op DISABLED. Dat betekent dat de locatie bij een update actie in principe niet automatisch wordt herberekend.
Na het inregelen van bovenstaande opzet zijn voor het proefgebiedje ongeveer 17.350 kunstwerkdelen uit de BGT in DEMO geladen. Dat ziet er zo uit:
- De blauwe vlakken (lijken lijntjes) zijn de waterdelen, de slootjes, beekjes, greppels
- De groene lijntjes (te klein, hier niet zichtbaar) zijn de stuwtjes, duikers, gemaaltjes
- De puntjes zijn de respectievelijke locaties van de waterdelen en kunstwerkdelen
Geen opmerkingen:
Een reactie posten