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
CG-GISDB gis.area in ha
- Steffen Junghans
- Beiträge: 44
- Registriert: 22. November 2017, 18:38
- Ort/Organisation: Stadt Zwickau
- Kontaktdaten:
Re: CG-GISDB gis.area in ha
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.
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
Steffen Junghans
- Karen Langwald
- Beiträge: 8
- Registriert: 23. November 2017, 10:04
Re: CG-GISDB gis.area in ha
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
Danke!
Karen Langwald
Re: CG-GISDB gis.area in ha
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":
Gutes Gelingen
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
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
Grund: Für bessere Lesbarkeit: Code in Code-TAGs gesetzt
- Steffen Junghans
- Beiträge: 44
- Registriert: 22. November 2017, 18:38
- Ort/Organisation: Stadt Zwickau
- Kontaktdaten:
Re: CG-GISDB gis.area in ha
Hallo Frau Fritz,
nach meiner Kenntnis wird die Objekt-Registrierung am Datenzugriff nur
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 dienutzen:
nach meiner Kenntnis wird die Objekt-Registrierung am Datenzugriff nur
- beim Digitalisieren
- beim (manuellen) Ändern von GIS-Keys
- beim manuellen Ändern eines GISDB-Feldes
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
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
Steffen Junghans