source: trunk/import/pp_definition.sql @ 421

Revision 351, 18.1 KB checked in by frank.jaeger, 6 years ago (diff)

Verbesserte Darstellung von Flur, Gemarkung und Gemeinde im WMS.

Line 
1
2-- ALKIS PostNAS 0.8
3
4-- Post Processing (pp_) Teil 1: Anlegen der Tabellen und Views
5
6-- Koordinatensystem ÃŒbergeben mit "psql  .. -v alkis_epsg=25832"
7-- :alkis_epsg=25832
8
9-- Stand
10--  2012-02-13 PostNAS 07, Umbenennung
11--  2012-02-17 Optimierung
12--  2012-02-28 gkz aus View nehmen
13--  2012-04-17 Flurstuecksnummern auf Standardposition
14--  2012-04-23 ax_flurstueck hat keinen Unique Index mehr auf gml_id,
15--             ForeignKey vorÃŒbergehend ausgeschaltet.
16--  2012-04-25 simple_geom fuer pp_flur
17--  2013-04-18 Kommentare.
18--  2012-10-24 Neue Tabelle fÃŒr die PrÀsentation von Straßennamen und -Klassifikationen
19--  2014-08-26 Aus "pp_strassenname" werden die Varianten *_p und *_l
20--             Erweiterte gml_id wie bei den primÀren Tabellen, bisher (16).
21--  2014-09-02 Entfernen der JOINs ÃŒber "alkis_beziehungen".
22--             Wie im Schema: SchlÃŒssel von integer nach varchar fÃŒr land, regierungsbezirk usw.
23--  2014-10-28 letzte FÀlle von "substring(gml_id,1,16)" wieder raus
24--  2014-12-17 Spalte gemeinde in Tabelle pp_flur, dient der Filterung im WMS-Layer "Gebiete"
25
26/* Patch 2014-12-17:
27 ALTER TABLE pp_flur ADD COLUMN gemeinde character varying;
28 COMMENT ON COLUMN pp_flur.gemeinde IS 'Gemeindenummer';
29*/
30
31-- ============================
32-- Tabellen des Post-Processing
33-- ============================
34
35-- Einige Informationen liegen nach der NAS-Konvertierung in der Datenbank "verstreut" vor.
36-- Die dynamische Aufbereitung ÃŒber Views und Functions wÃŒrde zu lange dauern und somit lange
37-- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen.
38
39-- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktialisierung)
40-- einmal komplett aufbereitet. Die benötigten Informationen stehen somit den Anwendungen mundgerecht zur VerfÌgung.
41
42-- Die per PostProcessing gefÃŒllten Tabellen bekommen den Prefix "pp_".
43
44-- ToDo:
45-- Muss *multi*-Polygon sein? Gibt es "zerrissene" Fluren/Gemarkungen?
46-- Der View "gemeinde_gemarkung" kann entfallen, wenn Navigation umgestellt wurde.
47
48SET client_encoding = 'UTF-8';
49
50-- Alles auf Anfang
51
52 DROP VIEW IF EXISTS gemeinde_person_typ1;
53 DROP VIEW IF EXISTS gemeinde_person_typ2;
54 DROP VIEW IF EXISTS gemeinde_person_statistik;
55 DROP VIEW IF EXISTS gemeinde_gemarkung;
56 DROP VIEW IF EXISTS pp_gemeinde_analyse;
57 DROP VIEW IF EXISTS pp_gemarkung_analyse;
58
59/*
60 DROP TABLE gemeinde_person;
61 DROP TABLE pp_gemeinde;
62 DROP TABLE pp_gemarkung;
63 DROP TABLE pp_flur;
64 DROP TABLE pp_flurstueck_nr;
65 DROP TABLE pp_strassenname_p;
66 DROP TABLE pp_strassenname_l;
67*/
68
69-- Tabelle fuer Gemeinden
70-- ========================
71
72  CREATE TABLE pp_gemeinde (
73    gid                serial,
74    land               character varying NOT NULL,
75    regierungsbezirk   character varying,
76    kreis              character varying,
77    gemeinde           character varying NOT NULL,
78    gemeindename       character varying(80),
79 -- gkz                character varying(03),    -- wird (noch) nicht benutzt
80    anz_gemarkg        integer,                  -- Anzahl Gemarkungen
81    CONSTRAINT pp_gemeinde_pk PRIMARY KEY (land, gemeinde)
82  );
83
84CREATE UNIQUE INDEX pp_gemeinde_gid_ix ON pp_gemeinde (gid);
85
86-- GesamtflÀche
87SELECT AddGeometryColumn('pp_gemeinde','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
88CREATE INDEX pp_gemeinde_gidx ON pp_gemeinde USING gist(the_geom);
89
90-- vereinfachte GesamtflÀche
91SELECT AddGeometryColumn('pp_gemeinde','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
92CREATE INDEX pp_gemeinde_sgidx ON pp_gemeinde USING gist(simple_geom);
93
94
95  COMMENT ON TABLE  pp_gemeinde                IS 'Post-Processing: Gemeinde';
96  COMMENT ON COLUMN pp_gemeinde.gemeinde       IS 'Gemeindenummer';
97--COMMENT ON COLUMN pp_gemeinde.gkz            IS 'Gemeindekennziffer fÃŒr Mandant';
98  COMMENT ON COLUMN pp_gemeinde.the_geom       IS 'prÀzise Geometrie aus Summe aller Gemarkungen';
99  COMMENT ON COLUMN pp_gemeinde.simple_geom    IS 'vereinfachte Geometrie fÃŒr die Suche und die Anzeige von Übersichten in kleinen MaßstÀben.';
100
101
102-- Tabelle fuer Gemarkungen
103-- ========================
104
105-- FÃŒr die Regelung der Zugriffsberechtigung einer Gemeindeverwaltung auf die
106-- FlurstÃŒcke in ihrem Gebiet braucht man die Information, in welcher Gemeinde eine Gemarkung liegt.
107-- 'ax_gemeinde' und 'ax_gemarkung' haben aber im ALKIS keinerlei Beziehung zueinander - kaum zu glauben!
108-- Nur ÃŒber die Auswertung der FlurstÃŒcke kann man die Zuordnung ermitteln.
109-- Da nicht stÀndig mit 'SELECT DISTINCT' sÀmtliche FlurstÌcke durchsucht werden können,
110-- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden.
111
112  CREATE TABLE pp_gemarkung (
113    gid                serial,
114    land               character varying NOT NULL,
115    regierungsbezirk   character varying,
116    kreis              character varying,
117    gemeinde           character varying NOT NULL, -- fast ein Foreign-Key Constraint
118    gemarkung          character varying NOT NULL,
119    gemarkungsname     character varying(80),
120    anz_flur           integer,                -- Anzahl Fluren
121    CONSTRAINT pp_gemarkung_pk PRIMARY KEY (land, gemarkung)
122  );
123
124CREATE UNIQUE INDEX pp_gemarkung_gid_ix ON pp_gemarkung (gid);
125
126-- GesamtflÀche
127SELECT AddGeometryColumn('pp_gemarkung','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
128CREATE INDEX pp_gemarkung_gidx ON pp_gemarkung USING gist(the_geom);
129
130-- vereinfachte GesamtflÀche
131SELECT AddGeometryColumn('pp_gemarkung','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
132CREATE INDEX pp_gemarkung_sgidx ON pp_gemarkung USING gist(simple_geom);
133
134
135COMMENT ON TABLE  pp_gemarkung               IS 'Post-Processing: Gemarkung. u.a. liegt in welcher Gemeinde';
136COMMENT ON COLUMN pp_gemarkung.gemeinde      IS 'Gemeindenummer';
137COMMENT ON COLUMN pp_gemarkung.gemarkung     IS 'Gemarkungsnummer';
138COMMENT ON COLUMN pp_gemarkung.the_geom      IS 'prÀzise Geometrie aus Summe aller Fluren';
139COMMENT ON COLUMN pp_gemarkung.simple_geom   IS 'vereinfachte Geometrie fÃŒr die Suche und die Anzeige von Übersichten in kleinen MaßstÀben.';
140
141
142-- Tabelle fuer Fluren
143-- ===================
144
145  CREATE TABLE pp_flur (
146    gid                serial,
147    land               character varying NOT NULL,
148    regierungsbezirk   character varying,
149    kreis              character varying,
150    gemeinde           character varying NOT NULL,
151    gemarkung          character varying NOT NULL,
152    flurnummer         integer NOT NULL,
153    anz_fs             integer,              -- Anzahl FlurstÃŒcke
154    CONSTRAINT pp_flur_pk PRIMARY KEY (land, gemarkung, flurnummer)
155  );
156
157-- ALTER TABLE pp_flur ADD COLUMN gid serial;
158CREATE UNIQUE INDEX pp_flur_gid_ix ON pp_flur (gid);
159
160-- GesamtflÀche
161SELECT AddGeometryColumn('pp_flur','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
162CREATE INDEX pp_flur_gidx ON pp_flur USING gist(the_geom);
163
164-- vereinfachte Gesamtflaeche
165SELECT AddGeometryColumn('pp_flur','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
166CREATE INDEX pp_flur_sgidx ON pp_flur USING gist(simple_geom);
167
168
169COMMENT ON TABLE  pp_flur                IS 'Post-Processing: Flur';
170COMMENT ON COLUMN pp_flur.gemeinde       IS 'Gemeindenummer';
171COMMENT ON COLUMN pp_flur.gemarkung      IS 'Gemarkungsnummer';
172COMMENT ON COLUMN pp_flur.the_geom       IS 'Geometrie aus Summe aller FlurstÃŒcke';
173COMMENT ON COLUMN pp_flur.simple_geom    IS 'vereinfachte Geometrie fÃŒr die Suche und die Anzeige von Übersichten in kleinen MaßstÀben.';
174
175
176-- =======================================================
177-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
178-- =======================================================
179
180-- Die Feststellung, ob eine Person (Mit-) EigentÃŒmer von mindestens einem
181-- FlurstÃŒck in einer Gemeinde ist, geht ÃŒber viele Relationen.
182-- Dabei kann es mehrere Varianten geben.
183-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in
184-- der Navigation auf einfache Art verwendet werden kann.
185
186
187-- Prefix "pp_" verwenden  ?
188
189--DROP TABLE gemeinde_person;
190
191  CREATE TABLE gemeinde_person (
192    land                character varying,
193    regierungsbezirk    character varying,
194    kreis               character varying,
195    gemeinde            character varying,
196    person              character varying,
197    buchtyp             integer,
198    CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person)
199  );
200
201COMMENT ON TABLE  gemeinde_person            IS 'Person ist EigentÃŒmer von mindestens einem FlurstÃŒck in der Gemeinde';
202COMMENT ON COLUMN gemeinde_person.gemeinde   IS 'Gemeindenummer';
203COMMENT ON COLUMN gemeinde_person.buchtyp    IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle';
204COMMENT ON COLUMN gemeinde_person.person     IS 'gml_id von Person';
205
206-- Index zum Filtern in der Buchauskunft
207CREATE INDEX person_gemeinde  ON gemeinde_person (person, gemeinde);
208
209
210-- Flurstuecksnummern-Position
211-- ===========================
212-- Die Tabelle "pp_flurstueck_nr" ersetzt den View "s_flurstueck_nr" fÃŒr WMS-Layer "ag_t_flurstueck".
213
214--DROP TABLE pp_flurstueck_nr;
215  CREATE TABLE pp_flurstueck_nr (
216    gid         serial,
217    fsgml            character varying,
218    fsnum            character varying(10),  -- zzzzz/nnnn
219    CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid)  --,
220-- Foreign Key
221-- ALT:
222--    CONSTRAINT pp_flurstueck_nr_gml FOREIGN KEY (fsgml)
223--      REFERENCES ax_flurstueck (gml_id) MATCH SIMPLE
224--      ON UPDATE CASCADE ON DELETE CASCADE
225-- Durch Änderung Patch #5444 am 2012-04-23 hat 'ax_flurstueck' keinen Unique-Index mehr auf gml_id
226-- Ersatzweise einen ForeignKey ÃŒber 2 Felder?
227  );
228
229SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom',:alkis_epsg,'POINT',2);
230
231-- Geometrischer Index
232CREATE INDEX pp_flurstueck_nr_gidx    ON pp_flurstueck_nr USING gist  (the_geom);
233CREATE INDEX fki_pp_flurstueck_nr_gml ON pp_flurstueck_nr USING btree (fsgml);
234
235COMMENT ON TABLE  pp_flurstueck_nr           IS 'Post-Processing: Position der FlurstÃŒcksnummer in der Karte';
236COMMENT ON COLUMN pp_flurstueck_nr.fsgml     IS 'gml_id des zugehörigen FlurstÃŒcks-Objektes ( <- ap_pto.dientZurDarstellungVon)';
237COMMENT ON COLUMN pp_flurstueck_nr.fsnum     IS 'Label, Darzustellende FS-Nummer als Bruch';
238COMMENT ON COLUMN pp_flurstueck_nr.the_geom  IS 'Position der FlurstÃŒcksnummer in der Karte';
239
240
241-- =====
242-- VIEWs
243-- =====
244
245-- Ein View, der ÃŒbergangsweise die ehemalige Tabelle mit diesem Namen ersetzt.
246-- Wird in der Navigation verwendet, bis alle Datenbanken auf die Struktur 0.7 umgestellt
247-- sind *UND* die Navigation an die neuen Tabellen angepasst ist.
248
249CREATE OR REPLACE VIEW gemeinde_gemarkung
250AS
251  SELECT g.land, g.regierungsbezirk, g.kreis, g.gemeinde, k.gemarkung, g.gemeindename, k.gemarkungsname
252  FROM pp_gemarkung k
253  JOIN pp_gemeinde  g
254    ON k.land = g.land AND k.gemeinde = g.gemeinde;
255
256COMMENT ON VIEW gemeinde_gemarkung
257  IS 'Die Sicht "gemeinde_gemarkung" enthaelt nur gefÃŒllte Gemarkungen (mit FS) aber Gemeinde mehrfach. Diese Sicht wird derzeit noch in der Navigation benutzt (alkisnav_fls.php, _grd.php, _eig.php). Definiert in pp_definition.sql. Soll kÃŒnftig entfallen.';
258
259
260-- VIEWs  fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
261-- ------------------------------------------------------
262
263-- "Normale" Buchungen
264-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen
265CREATE OR REPLACE VIEW gemeinde_person_typ1
266AS
267  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde
268  FROM ax_person          p
269  JOIN ax_namensnummer    n  ON n.benennt=p.gml_id              -- Person <benennt< Namensnummer
270  JOIN ax_buchungsblatt   b  ON n.istbestandteilvon=b.gml_id    -- Namensnummer >istBestandteilVon> Blatt
271  JOIN ax_buchungsstelle  s  ON s.istbestandteilvon= b.gml_id   -- Blatt <istBestandteilVon< buchungsStelle
272  JOIN ax_flurstueck      f  ON f.istgebucht=s.gml_id           -- buchungsStelle <istGebucht< flurstÃŒck
273  JOIN ax_gemarkung       k  ON f.land=k.land AND f.gemarkungsnummer=k.gemarkungsnummer
274  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer=g.gemarkung;
275
276COMMENT ON VIEW gemeinde_person_typ1
277  IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.';
278
279
280-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen
281-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen
282CREATE OR REPLACE VIEW gemeinde_person_typ2
283AS
284  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde
285  FROM ax_person          p
286  JOIN ax_namensnummer    n  ON n.benennt=p.gml_id             -- Person <benennt< Namensnummer
287  JOIN ax_buchungsblatt   b  ON n.istBestandteilVon=b.gml_id   -- Namensnummer >istBestandteilVon> Blatt
288  JOIN ax_buchungsstelle  s1 ON s1.istbestandteilvon=b.gml_id  -- Blatt <istBestandteilVon< buchungsStelle1
289  JOIN ax_buchungsstelle  s2 ON s2.gml_id=ANY(s1.an)           -- buchungsStelle2 <(recht)an< buchungsStelle1
290  JOIN ax_flurstueck      f  ON f.istgebucht=s2.gml_id         -- buchungsStelle2 < istGebucht < flurstÃŒck
291  JOIN ax_gemarkung       k  ON f.land=k.land AND f.gemarkungsnummer=k.gemarkungsnummer
292  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer=g.gemarkung;
293
294COMMENT ON VIEW gemeinde_person_typ2
295  IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.';
296
297-- Statistik ÃŒber die Buchungs-Typen je Gemeinde
298-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen
299CREATE OR REPLACE VIEW gemeinde_person_statistik
300AS
301  SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen
302  FROM   gemeinde_person    p
303  JOIN   gemeinde_gemarkung g
304    ON   p.land     = g.land
305    AND  p.regierungsbezirk = g.regierungsbezirk
306    AND  p.kreis    = g.kreis
307    AND  p.gemeinde = g.gemeinde
308  GROUP BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp
309  ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp;
310
311COMMENT ON VIEW gemeinde_person_statistik IS 'ZÀhlen der Personen je Gemeinde und Buchungstyp';
312
313
314-- Views zur Analyse der vereinfachten Geometrie
315-- Finden des richtigen Genauigkeits-Wertes fÃŒr die Vereinfachung der Geometrie
316
317-- z.B. Gemeinden:  10 Meter
318--      Gemarkungen: 4 Meter
319
320CREATE OR REPLACE VIEW pp_gemeinde_analyse AS
321  SELECT land, gemeinde, gemeindename,
322         st_npoints(the_geom)    AS umring_alle_punkte,
323         st_npoints(simple_geom) AS umring_einfache_punkte
324  FROM pp_gemeinde;
325
326
327CREATE OR REPLACE VIEW pp_gemarkung_analyse AS
328  SELECT land, gemeinde, gemarkung, gemarkungsname,
329         st_npoints(the_geom)    AS umring_alle_punkte,
330         st_npoints(simple_geom) AS umring_einfache_punkte
331  FROM pp_gemarkung;
332
333-- 2014-08-26 Aus Version "pp_strassenname" werden die Varianten *_p und *_l
334
335-- Variante fÃŒr Punkt-Geometrie
336CREATE TABLE pp_strassenname_p
337(   gid                    serial NOT NULL,
338    gml_id                 character varying,
339 -- advstandardmodell      character varying[],
340    schriftinhalt          character varying,      -- Label: anzuzeigender Text
341    hor                    character varying,
342    ver                    character varying,
343 -- signaturnummer         character varying,
344 -- darstellungsprioritaet integer,
345    art                    character varying,
346    winkel                 double precision,
347    CONSTRAINT pp_snamp_pk  PRIMARY KEY (gid)
348) WITH (OIDS=FALSE);
349
350-- :alkis_epsg = 25832
351SELECT AddGeometryColumn('pp_strassenname_p','the_geom',:alkis_epsg,'POINT',2);
352CREATE INDEX pp_snamp_gidx ON pp_strassenname_p USING gist(the_geom);
353
354  COMMENT ON TABLE  pp_strassenname_p                IS 'Post-Processing: Label der Straßennamen in der Karte, Punktgeometrie. Auszug aus ap_pto.';
355
356  COMMENT ON COLUMN pp_strassenname_p.gid            IS 'EditierschlÃŒssel der Tabelle';
357  COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'ObjektschlÃŒssel des PrÀsentationsobjektes aus "ax_lagebezeichnungohnehausnummer". Zur Verbindung mit Katalog beim Nachladen leerer Felder.';
358  COMMENT ON COLUMN pp_strassenname_p.schriftinhalt  IS 'Label, darzustellender Name der Straße oder Klassifikation';
359  COMMENT ON COLUMN pp_strassenname_p.hor            IS 'Horizontale Ausrichtung des Textes zur Punkt-Koordinate: linksbÃŒndig, zentrisch, ...';
360  COMMENT ON COLUMN pp_strassenname_p.ver            IS 'Vertikale   Ausrichtung des Textes zur Punkt-Koordinate: Basis, ..';
361  COMMENT ON COLUMN pp_strassenname_p.art            IS 'Klasse der Straße: Straße, Weg, .. , BezKlassifizierungStrasse';
362  COMMENT ON COLUMN pp_strassenname_p.winkel         IS 'Drehung des Textes';
363  COMMENT ON COLUMN pp_strassenname_p.the_geom       IS 'Position (Punkt) der Labels in der Karte';
364
365-- Variante fÃŒr Linien-Geometrie
366CREATE TABLE pp_strassenname_l
367(   gid                    serial NOT NULL,
368    gml_id                 character varying,
369    schriftinhalt          character varying,      -- Label: anzuzeigender Text
370    hor                    character varying,
371    ver                    character varying,
372    art                    character varying,
373 -- winkel                 double precision,       -- bei Linien-Variante nicht benötigt
374    CONSTRAINT pp_snaml_pk  PRIMARY KEY (gid)
375) WITH (OIDS=FALSE);
376
377-- :alkis_epsg = 25832
378SELECT AddGeometryColumn('pp_strassenname_l','the_geom',:alkis_epsg,'LINESTRING',2); -- Hier liegt der Unterschied
379CREATE INDEX pp_snaml_gidx ON pp_strassenname_l USING gist(the_geom);
380
381  COMMENT ON TABLE  pp_strassenname_l                IS 'Post-Processing: Label der Straßennamen in der Karte, Liniengeometrie. Auszug aus ap_lto.';
382
383  COMMENT ON COLUMN pp_strassenname_l.gid            IS 'EditierschlÃŒssel der Tabelle';
384  COMMENT ON COLUMN pp_strassenname_l.gml_id         IS 'ObjektschlÃŒssel des PrÀsentationsobjektes aus "ax_lagebezeichnungohnehausnummer". Zur Verbindung mit Katalog beim Nachladen leerer Felder.';
385  COMMENT ON COLUMN pp_strassenname_l.schriftinhalt  IS 'Label, darzustellender Name der Straße oder Klassifikation';
386  COMMENT ON COLUMN pp_strassenname_l.hor            IS 'Horizontale Ausrichtung des Textes: linksbÃŒndig, zentrisch, ...';
387  COMMENT ON COLUMN pp_strassenname_l.ver            IS 'Vertikale   Ausrichtung des Textes: Basis, ..';
388  COMMENT ON COLUMN pp_strassenname_l.art            IS 'Klasse der Straße: Straße, Weg, .. , BezKlassifizierungStrasse';
389  COMMENT ON COLUMN pp_strassenname_l.the_geom       IS 'Position (Punkt) der Labels in der Karte';
390
391
392-- ENDE --
Note: See TracBrowser for help on using the repository browser.