Skip to content

Instantly share code, notes, and snippets.

@signedav
Last active February 3, 2018 11:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save signedav/19da5c22bf9a8810e59b96bb06ed7b8b to your computer and use it in GitHub Desktop.
Save signedav/19da5c22bf9a8810e59b96bb06ed7b8b to your computer and use it in GitHub Desktop.

Vorarbeiten

Erstellen aller Tables:

- Stardardaufnahmen 
- Forstliche Langzeitprojekte
- Backoffice
- Sonderaufnahmen
- Referenztables
- Basisdatentabellen (gebraucht für Views)

Wird von DB gemacht -> mit dump restoren und darauf aufbauen.

Erstellen aller Schemas:

Wird von DB gemacht -> mit dump restoren und darauf aufbauen.

FK und Primary constrains:

Wird von DB gemacht -> mit dump restoren und darauf aufbauen.

Hi-Prio

Erstellen der Triggers betreffend Archivierung

- Für sämtliche Tabellen inkl. Referenztabellen (mit ar_time)

Enthalten in Packet #38 in Excel

  • Zeitschätzung abgeben

Erstellen der Triggers in der Quarantäne

- Für sämtliche Tabellen?

Enthalten in Packet #43 in Excel

  • Zeitschätzung abgeben

Erstellen der Triggers für restliche Logik TEIL 1

Nur „Durchforstung“ + „Erhaltung von LB Offenland“:
(1.1) - Wenn Maßnahmen erledigt sind, werden die Vegetationsobjekte gelöscht
(1.1) - Wenn alle Vegetationsobjekte erledigt (gelöscht) sind, werden die B16-Flächen erledigt gesetzt
(1.2) - Wenn Maßnahmen erledigt sind, werden die Drittgrundobjekte gelöscht
(1.3) - Wenn Langzeitprojekten* erledigtstatus + datum + erreichungsgrad 100 % (KEINE Logik zwischen: wenn B16-Fläche erledigt, dann % hochzählen oder so etwas) + mass_date -> dann gelöscht 
(1.3) - Wenn Langzeitprojekten* erledigtstatus + datum aber noch nicht 100%  + Wenn Langzeitprojekten „OLD.Erledigungsdatum“ < „NEW.Erledigungsdatum“ dann Fehler... (mass_date ist glaube ich Erledigungsdatum) ansonsten werden erledigtstatus + datum zurückgesetzt (nichts gelöscht)

- Bei „Problemorganismen“ werden sie nie gelöscht sondern auf 0 gesetzt, aber das muss noch besprochen werden.

Enthalten in Packet #38 in Excel

Erstellen der Triggers für restliche Logik TEIL 2

Bei Abänderungen in den Vegetationsobjekten, soll neben der Funktionalität in Paket #38, auch folgende miteinander verbundene Felder begutachtet werden:

  • earliest_mass_date in Tabelle be_flaeche soll sich immer nach UPDATES im mass_date Feld der referenzierten Vegeationsobjekte oder nach dem INSERT neuer refenzierter Vegetationsobjekte mit dem nun frühsten mass_date aller referenzierten Vegetationsobjekte befüllen.

Das heisst, wenn ein Vegetationsobjekt geändert wird, liest man das neueste mass_date aus allen Objekten, die auf dieselbe be_flaeche referenzieren und updated gegebenfalls das earlisest_mass_date damit.

  • die sum_... Felder in be_flaeche sollen sich immer bei UPDATES und INSERTS auf den Vegetationsflaechen neu berechnen (und u.U. auch auf den Langzeitprojekten bzw. Sonderstandorten)

Das heisst, wenn ein Vegetationsobjekt geändert wird, zählt man die Objekte oder Massnahmen, die auf diese be_flaeche referenzieren.

Enthalten in Packet #42 in Excel

Referenzupdate mit Post GIS Intersect Spatial Jin wenn be_flaeche ändert

Relationtabel Refrenzeinträge werden gemacht beim Schreiben ins Live - Post GIS SpatialJoin

- Das heisst, wenn Projekte oder die BK16 Fläche reingeladen werden, müssen die Geometrien verglichen und die Referenzen angepasst werden.
- Das heisst, wenn die Geometrie der Projekte oder der Fläche reingeladen werden, müssen die Geometrien verglichen werden und die Refernzen angepasst werden.
- Der FK in Projekt kann auch NULL sein können ()
- Hotspot muss eine BK16-Fläche haben (drauf liegen, nicht die nächste) - sind aber eh ausgegraut und momentan noch ignorieren Dave

Wenn eine projektfläche reinkommt:
- Gehe durch sämtliche be_flaechen (FOR LOOP) und mache intersect - wenn ja, dann schreib Eintrag in Relationtable
Wenn eine be_flaeche reinkommt:
- Gehe durch sämtliche be_flaechen (FOR LOOP) und mache intersect - wenn ja, dann schreib Eintrag in Relationtable
Wenn eine geometrie der projektfläche geändert wird:
- Gehe durch sämtliche be_flaechen (FOR LOOP) und mache intersect - wenn ja, dann schau ob es die Relation schon gibt, wenn nein, dann schreib Eintrag in Relationtable
- Gehe durch alle Relationen und überprüfe, ob sie noch zutreffen - wenn nein, dann lösche sie
Wenn eine geometrie der be_flaeche geändert wird:
- Gehe durch sämtliche projektflächen (FOR LOOP) und mache intersect - wenn ja, dann schau ob es die Relation schon gibt, wenn nein, dann schreib Eintrag in Relationtable
- Gehe durch alle Relationen und überprüfe, ob sie noch zutreffen - wenn nein, dann lösche sie

Oder löschen der Relations, wenn Projekt oder be_flaeche gelöscht wird...

Enthalten in Packet #42 in Excel

Erstellen der Checks

Wird von DB gemacht -> mit dump restoren und darauf aufbauen.

Erstellen der Views

Wird von DB gemacht -> mit dump restoren und darauf aufbauen.

Erstellen der Triggers für Views

Enthalten in Packet #39, #40 in Excel

Erstellen der Grants

Wird von DB gemacht

Me-Prio

Sicherheitslücke

- Wie kann man eine View Table updaten, ohne dass man Rechte auf alle Felder hat...
- Ist es möglich, dass der Trigger zum schreiben eine andere Rolle nimmt?

Beschreibende ID ändert sich, wenn sich etwas in den Unterfeldern ändert

Bearbeiten von Daten soll uU. nicht in die Quarantäne geschrieben werden, sondern direkt zurückmelden, wenn ein Check nicht erfolgreich war.

Das heisst es wär wie wenn auf die Live direkt geschrieben versucht wird. Oder ist es sogar. QGIS Projekte?

Allgemein Indexe Parsioning - Dass man auf den Boolean Deleted geht - damit es nicht ewig geht zum suchen

Lo-Prio

Refrerenztabellen: Wenn keine Referenz hergestellt werden konnte, kann die nächstgelegene BK16-Fläche genommen werden.

  • Spacial Indexe um das Referenzfeature zu beschleunigen

Regelkontrolle

Wie unterscheidet man erste und zweite Regelkontrolle? Wie weiss man "woher" die Daten kommen und beschreibt die korrektur_info dabit? FME/QField oder Anpassung Mitarbeiter? Wird momentan so gelöst, dass FME defaultmässige einträge in korrektur_info macht. Müssen aber Logik überdenken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment