CG-GISDB gis.area in ha

Benutzeravatar
Karen Langwald
Beiträge: 8
Registriert: 23. November 2017, 10:04

CG-GISDB gis.area in ha

Beitrag von Karen Langwald » 23. März 2018, 09:23

Hallo,
ich habe in eine CAIGOS GIS-DB ein Feld eingefügt, das automatisch die Fläche (GIS.AREA) des Objektes abruft und anzeigt.
Nun hätte ich diese Fläche gern in ha und nicht in m² dort stehen. Im Gegensatz zu eine Beschriftung habe ich die Option in einer GIS-DB hierfür nicht finden können.
Kann mir jemand helfen??

VG
Karen Langwald

Benutzeravatar
Steffen Junghans
Beiträge: 44
Registriert: 22. November 2017, 18:38
Ort/Organisation: Stadt Zwickau
Kontaktdaten:

Re: CG-GISDB gis.area in ha

Beitrag von Steffen Junghans » 23. März 2018, 12:14

Hallo,
mir ist kein einfacher Weg für dieses Vorhaben bekannt.

Was natürlich immer geht, ist eine zusätzliche Spalte anzulegen und diese direkt über den Datenbankserver füllen zu lassen.
In PostgreSQL wäre das ein einfacher Trigger auf die Tabelle/das Tabellenfeld.

Hat man keinen (direkten) Zugriff auf die Datenbank bzw. will man sich die Zusatzspalte sparen,, wäre noch ein entsprechendes ElaP-Script (RegSpt.mov) denkbar.
Viele Grüße
Steffen Junghans

Benutzeravatar
Karen Langwald
Beiträge: 8
Registriert: 23. November 2017, 10:04

Re: CG-GISDB gis.area in ha

Beitrag von Karen Langwald » 23. März 2018, 13:20

Ich hatte gehofft nur etwas übersehen zu haben. In diesem Fall werden wir dann mit der m²-Angabe auch leben können. Wär einfach "nett" gewesen.
Danke!

Karen Langwald

Jana Fritz (ARCHIKART)

Re: CG-GISDB gis.area in ha

Beitrag von Jana Fritz (ARCHIKART) » 23. April 2018, 09:01

Es gibt schon eine Möglichkeit im CAIGOS, mittels Objekt-Registrierung. Das funktioniert ähnlich, wie Datenbank-Trigger. ;)
Hierfür bitte ein 2. Datenbankfeld (Float) in der GISDB anlegen, wo der ha-Wert eingetragen wird. Danach in der Objektregistrierung am Projekt, am entsprechenden Datenzugriff folgende Einstellung vornehmen. Hierbei sind die Variablen entsprechend der eigenen GISDB anzupassen. In meinem Beispiel heisst die Tabelle "SHP0102_ADRESSE":

Code: Alles auswählen

module Register
 
function main () : integer
  set $LayerName ''
  Result 0
 
  if $SHP0102_ADRESSE_OBJID <> '{00000000-0000-0000-0000-000000000000}'
    calc $SHP0102_ADRESSE_FLAECHE_HA := $SHP0102_ADRESSE_FLAECHE_QM / 10000
    IFDChangeRec ('SHP0102_ADRESSE')
    Result 1
  endif
endfunc
Gutes Gelingen :)
Zuletzt geändert von Admin am 23. April 2018, 10:49, insgesamt 2-mal geändert.
Grund: Für bessere Lesbarkeit: Code in Code-TAGs gesetzt

Benutzeravatar
Steffen Junghans
Beiträge: 44
Registriert: 22. November 2017, 18:38
Ort/Organisation: Stadt Zwickau
Kontaktdaten:

Re: CG-GISDB gis.area in ha

Beitrag von Steffen Junghans » 23. April 2018, 10:39

Hallo Frau Fritz,
nach meiner Kenntnis wird die Objekt-Registrierung am Datenzugriff nur
  • beim Digitalisieren
  • beim (manuellen) Ändern von GIS-Keys
  • beim manuellen Ändern eines GISDB-Feldes
ausgelöst.

Wird also die Fläche nachträglich (graphisch) geändert, wird zwar das m²-Feld aktualisiert, aber die Objekt-Registrierung wird nicht "gefeuert". Somit bleibt mMn. der alte ha-Wert erhalten.

Will man keinen Trigger würde ich wie beschrieben die

Code: Alles auswählen

..\Profile\<gisdbname>\RegSpt.mov
nutzen:

Code: Alles auswählen

module <gistabname>_RegSptMov
function main () : integer
if $_RegDbName = 'D4U<gistabname>'
 if $D4U<gistabname>_OBJID <> '{00000000-0000-0000-0000-000000000000}'
    calc $D4U<gistabname>_HA := $D4U<gistabname>_QM / 10000
    IFDChangeRec ('D4U<gistabname>')
    Result 1
 endif
endif
endfunc
Viele Grüße
Steffen Junghans

Antworten