Gruppen und Themen für ALKIS: Gebäude: Unterschied zwischen den Versionen

Aus kvwmap
Wechseln zu: Navigation, Suche
 
(12 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Ursprungsversion, LUP 01.01.2015
 
 
<nowiki>
 
 
SET @group_id = 1;
 
SET @connection = 'user=xxxx password=xxxx dbname=kvwmapsp';
 
 
INSERT INTO layer (`Name`,`alias`,`Datentyp`,`Gruppe`,`pfad`,`maintable`,`Data`,`schema`,`document_path`,`tileindex`,`tileitem`,`labelangleitem`,`labelitem`,`labelmaxscale`,`labelminscale`,`labelrequires`,`connection`,`printconnection`,`connectiontype`,`classitem`,`filteritem`,`tolerance`,`toleranceunits`,`epsg_code`,`template`,`queryable`,`transparency`,`drawingorder`,`minscale`,`maxscale`,`offsite`,`ows_srs`,`wms_name`,`wms_server_version`,`wms_format`,`wms_connectiontimeout`,`wms_auth_username`,`wms_auth_password`,`wfs_geom`,`selectiontype`,`querymap`,`logconsume`,`processing`,`kurzbeschreibung`,`datenherr`,`metalink`,`privileg`) VALUES('Alkis Gebäude','','2',@group_id,'SELECT * FROM lk_gebaeude WHERE 1=1','lk_gebaeude','the_geom from (select ogc_fid as oid, wkb_geometry as the_geom from alkis.lk_gebaeude) as foo using unique oid using srid=25833','alkis','','','','','',NULL,NULL,'',@connection,'','6','','','3','pixels','25833','','1',NULL,'30000765','1','100000','','EPSG:25833','','1.1.0','image/png','60','','','','','1','0','','Gebäude in ALKIS','Vermessungs- und Geoinformationsbehörde LWL-PCH','','0');
 
SET @last_layer_id1152=LAST_INSERT_ID();
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'ax_datenerhebung','ax_datenerhebung','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','15','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'bezeichner','bezeichner','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','4','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'dachform','dachform','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','12','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'dach_bezeichner','dach_bezeichner','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','13','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'gebaeudefunktion','gebaeudefunktion','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','3','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'gebaeudezustand','gebaeudezustand','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','9','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'gml_id','gml_id','lk_gebaeude','lk_gebaeude','bpchar','','','1','16','Text','','','','2','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'herkunft','herkunft','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','16','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'hochhaus','hochhaus','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','14','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'lagezurerdoberflaeche','lagezurerdoberflaeche','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','11','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'name','name','lk_gebaeude','lk_gebaeude','_varchar','','','1',NULL,'Text','','','','5','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'objekthoehe','objekthoehe','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','10','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'ogc_fid','ogc_fid','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','1','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'oid','oid','lk_gebaeude','lk_gebaeude','oid','','','1',NULL,'Text','','','','0','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'weiterefunktion_bezeich','weiterefunktion_bezeich','lk_gebaeude','lk_gebaeude','varchar','','','1',NULL,'Text','','','','7','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'weiterefunktion_wert','weiterefunktion_wert','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','6','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'wkb_geometry','wkb_geometry','lk_gebaeude','lk_gebaeude','geometry','POLYGON','','1',NULL,'Text','','','','17','0');
 
INSERT INTO layer_attributes (`layer_id`,`name`,`real_name`,`tablename`,`table_alias_name`,`type`,`geometrytype`,`constraints`,`nullable`,`length`,`form_element_type`,`options`,`alias`,`tooltip`,`order`,`privileg`) VALUES(@last_layer_id1152,'zustand','zustand','lk_gebaeude','lk_gebaeude','int4','','','1','32','Text','','','','8','0');
 
INSERT INTO classes (`Name`,`Layer_ID`,`Expression`,`drawingorder`,`text`) VALUES('alle',@last_layer_id1152,'','0','');
 
SET @last_class_id=LAST_INSERT_ID();
 
INSERT INTO styles (`symbol`,`symbolname`,`size`,`color`,`backgroundcolor`,`outlinecolor`,`minsize`,`maxsize`,`angle`,`angleitem`,`antialias`,`width`,`minwidth`,`maxwidth`,`sizeitem`) VALUES(NULL,'','1','-1 -1 -1','  ','0 0 0',NULL,NULL,'','',NULL,NULL,NULL,NULL,'');
 
SET @last_style_id=LAST_INSERT_ID();
 
INSERT INTO u_styles2classes (style_id, class_id, drawingorder) VALUES (@last_style_id, @last_class_id, 0);
 
INSERT INTO labels (`font`,`type`,`color`,`outlinecolor`,`shadowcolor`,`shadowsizex`,`shadowsizey`,`backgroundcolor`,`backgroundshadowcolor`,`backgroundshadowsizex`,`backgroundshadowsizey`,`size`,`minsize`,`maxsize`,`position`,`offsetx`,`offsety`,`angle`,`autoangle`,`buffer`,`antialias`,`minfeaturesize`,`maxfeaturesize`,`partials`,`wrap`,`the_force`) VALUES('arial',NULL,'240 0 19','255 255 255','',NULL,NULL,'255 255 255','',NULL,NULL,'8','6','10',NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,NULL,'1',NULL,NULL);
 
SET @last_label_id=LAST_INSERT_ID();
 
INSERT INTO u_labels2classes (label_id, class_id) VALUES (@last_label_id, @last_class_id);
 
 
UPDATE layer_attributes SET options = REPLACE(options, '1152', @last_layer_id1152) WHERE layer_id IN(@last_layer_id1152) AND form_element_type IN ('SubFormPK', 'SubFormFK', 'SubFormEmbeddedPK');
 
 
</nowiki>
 
 
  
 
--[[Benutzer:Markus Hentschel|Markus Hentschel]] ([[Benutzer Diskussion:Markus Hentschel|Diskussion]]) 15:58, 17. Mär. 2015 (CET)
 
--[[Benutzer:Markus Hentschel|Markus Hentschel]] ([[Benutzer Diskussion:Markus Hentschel|Diskussion]]) 15:58, 17. Mär. 2015 (CET)
Zeile 54: Zeile 14:
 
  array_to_string(array(select gm.bezeichnung||', '||l.bezeichnung||' '||p.pseudonummer from alkis.ax_lagebezeichnungmitpseudonummer p, alkis.ax_gemeinde gm, alkis.ax_lagebezeichnungkatalogeintrag l where p.gemeinde = gm.gemeinde and gm.endet is not null and p.gemeinde = l.gemeinde and p.lage = l.lage and l.endet is not null and p.gml_id=o.hat),'
 
  array_to_string(array(select gm.bezeichnung||', '||l.bezeichnung||' '||p.pseudonummer from alkis.ax_lagebezeichnungmitpseudonummer p, alkis.ax_gemeinde gm, alkis.ax_lagebezeichnungkatalogeintrag l where p.gemeinde = gm.gemeinde and gm.endet is not null and p.gemeinde = l.gemeinde and p.lage = l.lage and l.endet is not null and p.gml_id=o.hat),'
 
') as lagemitpseudonummer,
 
') as lagemitpseudonummer,
  o.gebaeudefunktion, p.bezeichner, w.wert AS weiterefunktion, array_to_string(o.name,', '), o.zustand, z.bezeichner AS gebaeudezustand, o.objekthoehe, o.lagezurerdoberflaeche,  
+
  o.gebaeudefunktion, p.bezeichner, w.wert AS weiterefunktion, array_to_string(o.name,', ') as name, o.zustand, z.bezeichner AS gebaeudezustand, o.objekthoehe, o.lagezurerdoberflaeche,  
 
  o.dachform, d.bezeichner AS dach_bezeichner, o.hochhaus, o.ax_datenerhebung, da.bezeichner AS herkunft,  
 
  o.dachform, d.bezeichner AS dach_bezeichner, o.hochhaus, o.ax_datenerhebung, da.bezeichner AS herkunft,  
 
  o.wkb_geometry
 
  o.wkb_geometry
Zeile 65: Zeile 25:
 
</nowiki>
 
</nowiki>
 
:'''Achtung''': Die beiden Umbrüche bei '' ') as lagemithausnummer,'' und '' ') as lagemitpseudonummer,'' müssen exakt so auch ausgeführt werden, wenn der View mit pgAdmin geändert wird. Dadurch werden die Lagebezeichnungen (wenn ein Gebäude mehrere hat) im Textfeld untereinander geschrieben.
 
:'''Achtung''': Die beiden Umbrüche bei '' ') as lagemithausnummer,'' und '' ') as lagemitpseudonummer,'' müssen exakt so auch ausgeführt werden, wenn der View mit pgAdmin geändert wird. Dadurch werden die Lagebezeichnungen (wenn ein Gebäude mehrere hat) im Textfeld untereinander geschrieben.
 +
 +
=='''Gebäude LK MSE'''==
 +
--[[Benutzer:Schley|Norman Schley]] ([[Benutzer Diskussion:Schley|Diskussion]]) 15:08, 9. Jun. 2015 (CEST)--
 +
 +
Wir haben jetzt alles umgestellt auf Subforms innerhalb des Gebäudelayers. Ich versuche alles hier zu dokumentieren falls jemand das so machen möchte.
 +
 +
View Gebäude
 +
 +
<nowiki>
 +
CREATE OR REPLACE VIEW alkis.lk_pp_gebaeude AS
 +
SELECT ax_gebaeude.oid AS geb_oid, ax_gebaeude.ogc_fid, ax_gebaeude.gml_id, ax_gebaeude.gml_id AS geb_gml_id, ax_gebaeude.beginnt AS geb_beginnt, ax_gebaeude.endet AS geb_endet, ax_gebaeude.gebaeudefunktion, ax_gebaeude_funktion.bezeichner, ax_gebaeude.name, ax_gebaeude.grundflaeche, ax_gebaeude.anzahlderoberirdischengeschosse, ax_gebaeude.anzahlderunterirdischengeschosse, ax_gebaeude.dachform, ax_gebaeude_dachform.bezeichner AS dachform_bezeichner, ax_gebaeude.zustand, ax_gebaeude_zustand.bezeichner AS gebaeudezustand, ax_gebaeude.bauweise, ax_gebaeude_bauweise.bauweise_beschreibung, ax_gebaeude.ax_datenerhebung, ax_datenerhebung.bezeichner AS herkunft, ax_gebaeude.objekthoehe, ax_gebaeude.lagezurerdoberflaeche, ax_gebaeude.weiteregebaeudefunktion, ax_gebaeude_weiterefunktion.bezeichner AS bezeichnerweitere, ax_gebaeude.zeigtauf, ax_gebaeude.hat, ax_gebaeude.wkb_geometry
 +
  FROM alkis.ax_gebaeude
 +
  LEFT JOIN alkis.ax_gebaeude_funktion ON ax_gebaeude_funktion.wert = ax_gebaeude.gebaeudefunktion
 +
  LEFT JOIN alkis.ax_gebaeude_dachform ON ax_gebaeude_dachform.wert = ax_gebaeude.dachform
 +
  LEFT JOIN alkis.ax_gebaeude_zustand ON ax_gebaeude_zustand.wert = ax_gebaeude.zustand
 +
  LEFT JOIN alkis.ax_gebaeude_weiterefunktion ON ax_gebaeude_weiterefunktion.wert = ANY (ax_gebaeude.weiteregebaeudefunktion)
 +
  LEFT JOIN alkis.ax_datenerhebung ON ax_datenerhebung.wert = ax_gebaeude.ax_datenerhebung
 +
  LEFT JOIN alkis.ax_gebaeude_bauweise ON ax_gebaeude_bauweise.bauweise_id = ax_gebaeude.bauweise;</nowiki>
 +
 +
View besondere Gebäude
 +
 +
<nowiki>
 +
CREATE OR REPLACE VIEW alkis.lk_bes_gebaeude AS
 +
SELECT o.oid, o.ogc_fid, o.gml_id AS id_nebengeb, o.beginnt, o.endet, o.bauwerksfunktion, p.bezeichner, o.gehoertzu AS gml_id, o.wkb_geometry
 +
  FROM alkis.ax_sonstigesbauwerkodersonstigeeinrichtung o
 +
  LEFT JOIN alkis.alkis_beziehungen v ON v.beziehung_zu::text = o.gml_id::text
 +
  LEFT JOIN alkis.ax_sonstigesbauwerkodersonstigeeinrichtung_bauwerksfunktion p ON p.wert = o.bauwerksfunktion;
 +
</nowiki>
 +
 +
Folgende Tabellen sind nun notwendig für die Erstellung einer Sicht die die Lagebezeichnung mit der Gebäude GML-ID und deren Timestamps besitzt.
 +
 +
Tabelle '''pp_gebaeude''' -- Enthält alle Gebäude aus ax_gebaeude (wird durch das Post-Processing täglich neu befüllt)
 +
 +
<nowiki>
 +
CREATE TABLE alkis.pp_gebaeude
 +
(
 +
  geb_oid oid,
 +
  ogc_fid integer,
 +
  gml_id character varying(16),
 +
  geb_gml_id character varying(16),
 +
  geb_beginnt character(20),
 +
  geb_endet character(20),
 +
  gebaeudefunktion integer,
 +
  bezeichner character varying,
 +
  name character varying[],
 +
  grundflaeche integer,
 +
  anzahlderoberirdischengeschosse integer,
 +
  anzahlderunterirdischengeschosse integer,
 +
  dachform integer,
 +
  dachform_bezeichner character varying,
 +
  zustand integer,
 +
  gebaeudezustand character varying,
 +
  bauweise integer,
 +
  bauweise_beschreibung character varying,
 +
  ax_datenerhebung integer,
 +
  herkunft character varying,
 +
  objekthoehe double precision,
 +
  lagezurerdoberflaeche integer,
 +
  weiteregebaeudefunktion integer[],
 +
  bezeichnerweitere character varying,
 +
  zeigtauf character varying[],
 +
  hat character varying,
 +
  wkb_geometry geometry,
 +
  gid serial PRIMARY KEY
 +
)
 +
WITH (
 +
  OIDS=TRUE
 +
);
 +
COMMENT ON TABLE alkis.pp_gebaeude
 +
  IS 'Post-Processing: Gebäude';
 +
</nowiki>
 +
 +
Das dazugehörige Post-Processing was jede Nacht läuft.
 +
 +
<nowiki>
 +
TRUNCATE TABLE pp_gebaeude;
 +
 +
ALTER SEQUENCE pp_gebaeude_gid_seq RESTART;
 +
 +
INSERT INTO pp_gebaeude (geb_oid,ogc_fid,gml_id,geb_gml_id,geb_beginnt,geb_endet,gebaeudefunktion,bezeichner,name,grundflaeche,anzahlderoberirdischengeschosse,anzahlderunterirdischengeschosse,dachform,dachform_bezeichner,zustand,gebaeudezustand,bauweise,bauweise_beschreibung,ax_datenerhebung,herkunft,objekthoehe,lagezurerdoberflaeche,weiteregebaeudefunktion,bezeichnerweitere,zeigtauf,hat,wkb_geometry)
 +
SELECT geb_oid,ogc_fid,gml_id,geb_gml_id,geb_beginnt,geb_endet,gebaeudefunktion,bezeichner,name,grundflaeche,anzahlderoberirdischengeschosse,anzahlderunterirdischengeschosse,dachform,dachform_bezeichner,zustand,gebaeudezustand,bauweise,bauweise_beschreibung,ax_datenerhebung,herkunft,objekthoehe,lagezurerdoberflaeche,weiteregebaeudefunktion,bezeichnerweitere,zeigtauf,hat,wkb_geometry
 +
FROM lk_pp_gebaeude;
 +
</nowiki>
 +
 +
Tabelle '''pp_lagebezeichnungen''' -- Enthält alle Lagebezeichnungen aus ax_lagebezeichnungmithausnummer und ax_lagebezeichnungmitpseudonummer
 +
 +
<nowiki>
 +
CREATE TABLE alkis.pp_lagebezeichnungen
 +
(
 +
  gid serial PRIMARY KEY,
 +
  gml_id character varying,
 +
  lb_beginnt character(20),
 +
  lb_endet character(20),
 +
  kat_beginnt character(20),
 +
  kat_endet character(20),
 +
  gemeinde integer,
 +
  lage character varying,
 +
  hausnummer character varying,
 +
  lagebezeichnung text,
 +
  art character varying
 +
)
 +
WITH (
 +
  OIDS=TRUE
 +
);
 +
COMMENT ON TABLE alkis.pp_lagebezeichnungen
 +
  IS 'Enthält die Lagebezeichnungen aus den Tabellen ax_lagebezeichnungmithausnummer und ax_lagebezeichnungmitpseudohausnummer';
 +
</nowiki>
 +
 +
Das dazugehörige Post-Processing was jede Nacht läuft.
 +
 +
<nowiki>
 +
TRUNCATE TABLE alkis.pp_lagebezeichnungen;
 +
 +
ALTER SEQUENCE alkis.pp_lagebezeichnungen_gid_seq RESTART;
 +
 +
INSERT INTO alkis.pp_lagebezeichnungen (gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
 +
SELECT a.gml_id,a.beginnt as lb_beginnt,a.endet as lb_endet,b.beginnt as kat_beginnt,b.endet as kat_endet,a.gemeinde,a.lage,a.hausnummer,c.bezeichnung||', '||b.bezeichnung||' '||a.hausnummer as lagebezeichnung,'lagebezeichnungmithausnummer' as art
 +
FROM alkis.ax_lagebezeichnungmithausnummer a,alkis.ax_lagebezeichnungkatalogeintrag b,alkis.ax_gemeinde c
 +
WHERE a.gemeinde=c.gemeinde AND a.gemeinde=b.gemeinde AND a.lage=b.lage AND c.endet IS NULL;
 +
 +
INSERT INTO alkis.pp_lagebezeichnungen (gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
 +
SELECT a.gml_id,a.beginnt as lb_beginnt,a.endet as lb_endet,b.beginnt as kat_beginnt,b.endet as kat_endet,a.gemeinde,a.lage,a.pseudonummer as hausnummer,c.bezeichnung||', '||b.bezeichnung||' '||a.pseudonummer as lagebezeichnung,'lagebezeichnungmitpseudonummer' as art
 +
FROM alkis.ax_lagebezeichnungmitpseudonummer a,alkis.ax_lagebezeichnungkatalogeintrag b,alkis.ax_gemeinde c
 +
WHERE a.gemeinde=c.gemeinde AND a.gemeinde=b.gemeinde AND a.lage=b.lage AND c.endet IS NULL;
 +
</nowiki>
 +
 +
Jetzt können zwei Sichten erstellt werden, die die Gebäude GML ID und deren Timestamps an die Lagebezeichnungen ran heftet.
 +
 +
VIEW alkis.lk_pp_lbmp_mit_geb_gml_id -- Sicht die die Lagebezeichnung mit Pseudonummer und mit Gebäude GML ID enthält. Wertet die Spalte "hat" aus.
 +
 +
<nowiki>
 +
CREATE OR REPLACE VIEW alkis.lk_pp_lbmp_mit_geb_gml_id AS
 +
SELECT pp_lagebezeichnungen.gid, pp_gebaeude.gml_id AS geb_gml_id, pp_gebaeude.geb_beginnt, pp_gebaeude.geb_endet, pp_lagebezeichnungen.gml_id, pp_lagebezeichnungen.lb_beginnt, pp_lagebezeichnungen.lb_endet, pp_lagebezeichnungen.kat_beginnt, pp_lagebezeichnungen.kat_endet, pp_lagebezeichnungen.gemeinde, pp_lagebezeichnungen.lage, pp_lagebezeichnungen.hausnummer, pp_lagebezeichnungen.lagebezeichnung, pp_lagebezeichnungen.art
 +
  FROM alkis.pp_lagebezeichnungen
 +
  LEFT JOIN alkis.pp_gebaeude ON pp_lagebezeichnungen.gml_id::text = pp_gebaeude.hat::text
 +
  WHERE pp_lagebezeichnungen.art::text = 'lagebezeichnungmitpseudonummer'::text
 +
  ORDER BY pp_lagebezeichnungen.lagebezeichnung;
 +
 +
COMMENT ON VIEW alkis.lk_pp_lbmp_mit_geb_gml_id
 +
  IS 'Lagebezeichnung mit Pseudohausnummer und der Gebäude GML-ID';
 +
</nowiki>
 +
 +
VIEW alkis.lk_pp_lbmh_mit_geb_gml_id -- Sicht die die Lagebezeichnung mit Hausnummer und mit Gebäude GML ID enthält. Wertet die Spalte "zeigtauf" aus.
 +
 +
<nowiki>
 +
CREATE OR REPLACE VIEW alkis.lk_pp_lbmh_mit_geb_gml_id AS
 +
SELECT pp_lagebezeichnungen.gid, pp_gebaeude.gml_id AS geb_gml_id, pp_gebaeude.geb_beginnt, pp_gebaeude.geb_endet, pp_lagebezeichnungen.gml_id, pp_lagebezeichnungen.lb_beginnt, pp_lagebezeichnungen.lb_endet, pp_lagebezeichnungen.kat_beginnt, pp_lagebezeichnungen.kat_endet, pp_lagebezeichnungen.gemeinde, pp_lagebezeichnungen.lage, pp_lagebezeichnungen.hausnummer, pp_lagebezeichnungen.lagebezeichnung, pp_lagebezeichnungen.art
 +
  FROM alkis.pp_lagebezeichnungen
 +
  LEFT JOIN alkis.pp_gebaeude ON pp_lagebezeichnungen.gml_id::text = ANY (pp_gebaeude.zeigtauf::text[])
 +
  WHERE pp_lagebezeichnungen.art::text = 'lagebezeichnungmithausnummer'::text
 +
  ORDER BY pp_lagebezeichnungen.lagebezeichnung;
 +
 +
ALTER TABLE alkis.lk_pp_lbmh_mit_geb_gml_id
 +
  OWNER TO gisadmin;
 +
COMMENT ON VIEW alkis.lk_pp_lbmh_mit_geb_gml_id
 +
  IS 'Lagebezeichnung mit Hausnummer und der Gebäude GML-ID';
 +
</nowiki>
 +
 +
So und jetzt eine Tabelle für die ganzen Daten anlegen und alles in eine Tabelle schreiben lassen via Post-Processing.
 +
 +
Tabelle '''pp_lagebezeichnungen_mit_gebaeude'''
 +
 +
<nowiki>
 +
CREATE TABLE alkis.pp_lagebezeichnungen_mit_gebaeude
 +
(
 +
  geb_gml_id character varying(16),
 +
  gml_id character varying,
 +
  lb_beginnt character(20),
 +
  lb_endet character(20),
 +
  kat_beginnt character(20),
 +
  kat_endet character(20),
 +
  gemeinde integer,
 +
  lage character varying,
 +
  hausnummer character varying,
 +
  lagebezeichnung text,
 +
  art character varying,
 +
  gid serial PRIMARY KEY,
 +
  geb_beginnt character(20),
 +
  geb_endet character(20)
 +
)
 +
WITH (
 +
  OIDS=TRUE
 +
);
 +
COMMENT ON TABLE alkis.pp_lagebezeichnungen_mit_gebaeude
 +
  IS 'Post-Processing: Lagebezeichnungen mit Gebäude GML ID';
 +
</nowiki>
 +
 +
Das dazugehörige Post-Processing was jede Nacht läuft.
 +
 +
<nowiki>
 +
TRUNCATE TABLE pp_lagebezeichnungen_mit_gebaeude;
 +
 +
ALTER SEQUENCE pp_lagebezeichnungen_mit_gebaeude_gid_seq RESTART;
 +
 +
INSERT INTO pp_lagebezeichnungen_mit_gebaeude (geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
 +
SELECT geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art FROM lk_pp_lbmp_mit_geb_gml_id;
 +
 +
INSERT INTO pp_lagebezeichnungen_mit_gebaeude (geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
 +
SELECT geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art FROM lk_pp_lbmh_mit_geb_gml_id;
 +
</nowiki>
 +
 +
 +
'''KVWMAP Layer'''
 +
 +
In kvwmap haben wir jetzt drei Layer die die Gebäude abbilden.
 +
 +
*Gebäude = Hauptlayer
 +
*lagebezeichnungen = Querylayer der per Subformembedded im Gebäudelayer eingetragen ist
 +
*bes_gebaeude = Layer der per Subformembedded im Gebäudelayer eingetragen ist aber auch separat eingeschaltet werden kann

Aktuelle Version vom 22. März 2017, 14:58 Uhr

--Markus Hentschel (Diskussion) 15:58, 17. Mär. 2015 (CET)

Version vom 18.03.15 Wesentliche Änderungen: Lagebezeichnung mit reingenommen

Erweiterung des Views lk_gebaeude:

CREATE OR REPLACE VIEW alkis.lk_gebaeude AS 
 SELECT o.oid, o.ogc_fid, o.gml_id, 
 array_to_string(array(select gm.bezeichnung||', '||l.bezeichnung||' '||h.hausnummer from alkis.ax_lagebezeichnungmithausnummer h, alkis.ax_gemeinde gm, alkis.ax_lagebezeichnungkatalogeintrag l where h.gemeinde = gm.gemeinde and gm.endet is not null and h.gemeinde = l.gemeinde and h.lage = l.lage and l.endet is not null and h.gml_id=any(o.zeigtauf)),'
') as lagemithausnummer, 
 array_to_string(array(select gm.bezeichnung||', '||l.bezeichnung||' '||p.pseudonummer from alkis.ax_lagebezeichnungmitpseudonummer p, alkis.ax_gemeinde gm, alkis.ax_lagebezeichnungkatalogeintrag l where p.gemeinde = gm.gemeinde and gm.endet is not null and p.gemeinde = l.gemeinde and p.lage = l.lage and l.endet is not null and p.gml_id=o.hat),'
') as lagemitpseudonummer,
 o.gebaeudefunktion, p.bezeichner, w.wert AS weiterefunktion, array_to_string(o.name,', ') as name, o.zustand, z.bezeichner AS gebaeudezustand, o.objekthoehe, o.lagezurerdoberflaeche, 
 o.dachform, d.bezeichner AS dach_bezeichner, o.hochhaus, o.ax_datenerhebung, da.bezeichner AS herkunft, 
 o.wkb_geometry
   FROM alkis.ax_gebaeude o
   LEFT JOIN alkis.ax_gebaeude_funktion p ON p.wert = o.gebaeudefunktion
   LEFT JOIN alkis.ax_gebaeude_dachform d ON d.wert = o.dachform
   LEFT JOIN alkis.ax_gebaeude_zustand z ON z.wert = o.zustand
   LEFT JOIN alkis.ax_gebaeude_weiterefunktion w ON w.wert = ANY (o.weiteregebaeudefunktion)
   LEFT JOIN alkis.ax_datenerhebung da ON da.wert = o.ax_datenerhebung;

Achtung: Die beiden Umbrüche bei ') as lagemithausnummer, und ') as lagemitpseudonummer, müssen exakt so auch ausgeführt werden, wenn der View mit pgAdmin geändert wird. Dadurch werden die Lagebezeichnungen (wenn ein Gebäude mehrere hat) im Textfeld untereinander geschrieben.

Gebäude LK MSE

--Norman Schley (Diskussion) 15:08, 9. Jun. 2015 (CEST)--

Wir haben jetzt alles umgestellt auf Subforms innerhalb des Gebäudelayers. Ich versuche alles hier zu dokumentieren falls jemand das so machen möchte.

View Gebäude

CREATE OR REPLACE VIEW alkis.lk_pp_gebaeude AS 
 SELECT ax_gebaeude.oid AS geb_oid, ax_gebaeude.ogc_fid, ax_gebaeude.gml_id, ax_gebaeude.gml_id AS geb_gml_id, ax_gebaeude.beginnt AS geb_beginnt, ax_gebaeude.endet AS geb_endet, ax_gebaeude.gebaeudefunktion, ax_gebaeude_funktion.bezeichner, ax_gebaeude.name, ax_gebaeude.grundflaeche, ax_gebaeude.anzahlderoberirdischengeschosse, ax_gebaeude.anzahlderunterirdischengeschosse, ax_gebaeude.dachform, ax_gebaeude_dachform.bezeichner AS dachform_bezeichner, ax_gebaeude.zustand, ax_gebaeude_zustand.bezeichner AS gebaeudezustand, ax_gebaeude.bauweise, ax_gebaeude_bauweise.bauweise_beschreibung, ax_gebaeude.ax_datenerhebung, ax_datenerhebung.bezeichner AS herkunft, ax_gebaeude.objekthoehe, ax_gebaeude.lagezurerdoberflaeche, ax_gebaeude.weiteregebaeudefunktion, ax_gebaeude_weiterefunktion.bezeichner AS bezeichnerweitere, ax_gebaeude.zeigtauf, ax_gebaeude.hat, ax_gebaeude.wkb_geometry
   FROM alkis.ax_gebaeude
   LEFT JOIN alkis.ax_gebaeude_funktion ON ax_gebaeude_funktion.wert = ax_gebaeude.gebaeudefunktion
   LEFT JOIN alkis.ax_gebaeude_dachform ON ax_gebaeude_dachform.wert = ax_gebaeude.dachform
   LEFT JOIN alkis.ax_gebaeude_zustand ON ax_gebaeude_zustand.wert = ax_gebaeude.zustand
   LEFT JOIN alkis.ax_gebaeude_weiterefunktion ON ax_gebaeude_weiterefunktion.wert = ANY (ax_gebaeude.weiteregebaeudefunktion)
   LEFT JOIN alkis.ax_datenerhebung ON ax_datenerhebung.wert = ax_gebaeude.ax_datenerhebung
   LEFT JOIN alkis.ax_gebaeude_bauweise ON ax_gebaeude_bauweise.bauweise_id = ax_gebaeude.bauweise;

View besondere Gebäude

CREATE OR REPLACE VIEW alkis.lk_bes_gebaeude AS 
 SELECT o.oid, o.ogc_fid, o.gml_id AS id_nebengeb, o.beginnt, o.endet, o.bauwerksfunktion, p.bezeichner, o.gehoertzu AS gml_id, o.wkb_geometry
   FROM alkis.ax_sonstigesbauwerkodersonstigeeinrichtung o
   LEFT JOIN alkis.alkis_beziehungen v ON v.beziehung_zu::text = o.gml_id::text
   LEFT JOIN alkis.ax_sonstigesbauwerkodersonstigeeinrichtung_bauwerksfunktion p ON p.wert = o.bauwerksfunktion;

Folgende Tabellen sind nun notwendig für die Erstellung einer Sicht die die Lagebezeichnung mit der Gebäude GML-ID und deren Timestamps besitzt.

Tabelle pp_gebaeude -- Enthält alle Gebäude aus ax_gebaeude (wird durch das Post-Processing täglich neu befüllt)

CREATE TABLE alkis.pp_gebaeude
(
  geb_oid oid,
  ogc_fid integer,
  gml_id character varying(16),
  geb_gml_id character varying(16),
  geb_beginnt character(20),
  geb_endet character(20),
  gebaeudefunktion integer,
  bezeichner character varying,
  name character varying[],
  grundflaeche integer,
  anzahlderoberirdischengeschosse integer,
  anzahlderunterirdischengeschosse integer,
  dachform integer,
  dachform_bezeichner character varying,
  zustand integer,
  gebaeudezustand character varying,
  bauweise integer,
  bauweise_beschreibung character varying,
  ax_datenerhebung integer,
  herkunft character varying,
  objekthoehe double precision,
  lagezurerdoberflaeche integer,
  weiteregebaeudefunktion integer[],
  bezeichnerweitere character varying,
  zeigtauf character varying[],
  hat character varying,
  wkb_geometry geometry,
  gid serial PRIMARY KEY
)
WITH (
  OIDS=TRUE
);
COMMENT ON TABLE alkis.pp_gebaeude
  IS 'Post-Processing: Gebäude';

Das dazugehörige Post-Processing was jede Nacht läuft.

TRUNCATE TABLE pp_gebaeude;

ALTER SEQUENCE pp_gebaeude_gid_seq RESTART;

INSERT INTO pp_gebaeude (geb_oid,ogc_fid,gml_id,geb_gml_id,geb_beginnt,geb_endet,gebaeudefunktion,bezeichner,name,grundflaeche,anzahlderoberirdischengeschosse,anzahlderunterirdischengeschosse,dachform,dachform_bezeichner,zustand,gebaeudezustand,bauweise,bauweise_beschreibung,ax_datenerhebung,herkunft,objekthoehe,lagezurerdoberflaeche,weiteregebaeudefunktion,bezeichnerweitere,zeigtauf,hat,wkb_geometry)
SELECT geb_oid,ogc_fid,gml_id,geb_gml_id,geb_beginnt,geb_endet,gebaeudefunktion,bezeichner,name,grundflaeche,anzahlderoberirdischengeschosse,anzahlderunterirdischengeschosse,dachform,dachform_bezeichner,zustand,gebaeudezustand,bauweise,bauweise_beschreibung,ax_datenerhebung,herkunft,objekthoehe,lagezurerdoberflaeche,weiteregebaeudefunktion,bezeichnerweitere,zeigtauf,hat,wkb_geometry 
FROM lk_pp_gebaeude;

Tabelle pp_lagebezeichnungen -- Enthält alle Lagebezeichnungen aus ax_lagebezeichnungmithausnummer und ax_lagebezeichnungmitpseudonummer

CREATE TABLE alkis.pp_lagebezeichnungen
(
  gid serial PRIMARY KEY,
  gml_id character varying,
  lb_beginnt character(20),
  lb_endet character(20),
  kat_beginnt character(20),
  kat_endet character(20),
  gemeinde integer,
  lage character varying,
  hausnummer character varying,
  lagebezeichnung text,
  art character varying
)
WITH (
  OIDS=TRUE
);
COMMENT ON TABLE alkis.pp_lagebezeichnungen
  IS 'Enthält die Lagebezeichnungen aus den Tabellen ax_lagebezeichnungmithausnummer und ax_lagebezeichnungmitpseudohausnummer';

Das dazugehörige Post-Processing was jede Nacht läuft.

TRUNCATE TABLE alkis.pp_lagebezeichnungen;

ALTER SEQUENCE alkis.pp_lagebezeichnungen_gid_seq RESTART;

INSERT INTO alkis.pp_lagebezeichnungen (gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
SELECT a.gml_id,a.beginnt as lb_beginnt,a.endet as lb_endet,b.beginnt as kat_beginnt,b.endet as kat_endet,a.gemeinde,a.lage,a.hausnummer,c.bezeichnung||', '||b.bezeichnung||' '||a.hausnummer as lagebezeichnung,'lagebezeichnungmithausnummer' as art
FROM alkis.ax_lagebezeichnungmithausnummer a,alkis.ax_lagebezeichnungkatalogeintrag b,alkis.ax_gemeinde c
WHERE a.gemeinde=c.gemeinde AND a.gemeinde=b.gemeinde AND a.lage=b.lage AND c.endet IS NULL;

INSERT INTO alkis.pp_lagebezeichnungen (gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
SELECT a.gml_id,a.beginnt as lb_beginnt,a.endet as lb_endet,b.beginnt as kat_beginnt,b.endet as kat_endet,a.gemeinde,a.lage,a.pseudonummer as hausnummer,c.bezeichnung||', '||b.bezeichnung||' '||a.pseudonummer as lagebezeichnung,'lagebezeichnungmitpseudonummer' as art
FROM alkis.ax_lagebezeichnungmitpseudonummer a,alkis.ax_lagebezeichnungkatalogeintrag b,alkis.ax_gemeinde c
WHERE a.gemeinde=c.gemeinde AND a.gemeinde=b.gemeinde AND a.lage=b.lage AND c.endet IS NULL;

Jetzt können zwei Sichten erstellt werden, die die Gebäude GML ID und deren Timestamps an die Lagebezeichnungen ran heftet.

VIEW alkis.lk_pp_lbmp_mit_geb_gml_id -- Sicht die die Lagebezeichnung mit Pseudonummer und mit Gebäude GML ID enthält. Wertet die Spalte "hat" aus.

CREATE OR REPLACE VIEW alkis.lk_pp_lbmp_mit_geb_gml_id AS 
 SELECT pp_lagebezeichnungen.gid, pp_gebaeude.gml_id AS geb_gml_id, pp_gebaeude.geb_beginnt, pp_gebaeude.geb_endet, pp_lagebezeichnungen.gml_id, pp_lagebezeichnungen.lb_beginnt, pp_lagebezeichnungen.lb_endet, pp_lagebezeichnungen.kat_beginnt, pp_lagebezeichnungen.kat_endet, pp_lagebezeichnungen.gemeinde, pp_lagebezeichnungen.lage, pp_lagebezeichnungen.hausnummer, pp_lagebezeichnungen.lagebezeichnung, pp_lagebezeichnungen.art
   FROM alkis.pp_lagebezeichnungen
   LEFT JOIN alkis.pp_gebaeude ON pp_lagebezeichnungen.gml_id::text = pp_gebaeude.hat::text
  WHERE pp_lagebezeichnungen.art::text = 'lagebezeichnungmitpseudonummer'::text
  ORDER BY pp_lagebezeichnungen.lagebezeichnung;

COMMENT ON VIEW alkis.lk_pp_lbmp_mit_geb_gml_id
  IS 'Lagebezeichnung mit Pseudohausnummer und der Gebäude GML-ID';

VIEW alkis.lk_pp_lbmh_mit_geb_gml_id -- Sicht die die Lagebezeichnung mit Hausnummer und mit Gebäude GML ID enthält. Wertet die Spalte "zeigtauf" aus.

CREATE OR REPLACE VIEW alkis.lk_pp_lbmh_mit_geb_gml_id AS 
 SELECT pp_lagebezeichnungen.gid, pp_gebaeude.gml_id AS geb_gml_id, pp_gebaeude.geb_beginnt, pp_gebaeude.geb_endet, pp_lagebezeichnungen.gml_id, pp_lagebezeichnungen.lb_beginnt, pp_lagebezeichnungen.lb_endet, pp_lagebezeichnungen.kat_beginnt, pp_lagebezeichnungen.kat_endet, pp_lagebezeichnungen.gemeinde, pp_lagebezeichnungen.lage, pp_lagebezeichnungen.hausnummer, pp_lagebezeichnungen.lagebezeichnung, pp_lagebezeichnungen.art
   FROM alkis.pp_lagebezeichnungen
   LEFT JOIN alkis.pp_gebaeude ON pp_lagebezeichnungen.gml_id::text = ANY (pp_gebaeude.zeigtauf::text[])
  WHERE pp_lagebezeichnungen.art::text = 'lagebezeichnungmithausnummer'::text
  ORDER BY pp_lagebezeichnungen.lagebezeichnung;

ALTER TABLE alkis.lk_pp_lbmh_mit_geb_gml_id
  OWNER TO gisadmin;
COMMENT ON VIEW alkis.lk_pp_lbmh_mit_geb_gml_id
  IS 'Lagebezeichnung mit Hausnummer und der Gebäude GML-ID';

So und jetzt eine Tabelle für die ganzen Daten anlegen und alles in eine Tabelle schreiben lassen via Post-Processing.

Tabelle pp_lagebezeichnungen_mit_gebaeude

CREATE TABLE alkis.pp_lagebezeichnungen_mit_gebaeude
(
  geb_gml_id character varying(16),
  gml_id character varying,
  lb_beginnt character(20),
  lb_endet character(20),
  kat_beginnt character(20),
  kat_endet character(20),
  gemeinde integer,
  lage character varying,
  hausnummer character varying,
  lagebezeichnung text,
  art character varying,
  gid serial PRIMARY KEY,
  geb_beginnt character(20),
  geb_endet character(20)
)
WITH (
  OIDS=TRUE
);
COMMENT ON TABLE alkis.pp_lagebezeichnungen_mit_gebaeude
  IS 'Post-Processing: Lagebezeichnungen mit Gebäude GML ID';

Das dazugehörige Post-Processing was jede Nacht läuft.

TRUNCATE TABLE pp_lagebezeichnungen_mit_gebaeude;

ALTER SEQUENCE pp_lagebezeichnungen_mit_gebaeude_gid_seq RESTART;

INSERT INTO pp_lagebezeichnungen_mit_gebaeude (geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
SELECT geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art FROM lk_pp_lbmp_mit_geb_gml_id;

INSERT INTO pp_lagebezeichnungen_mit_gebaeude (geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art)
SELECT geb_gml_id,geb_beginnt,geb_endet,gml_id,lb_beginnt,lb_endet,kat_beginnt,kat_endet,gemeinde,lage,hausnummer,lagebezeichnung,art FROM lk_pp_lbmh_mit_geb_gml_id;


KVWMAP Layer

In kvwmap haben wir jetzt drei Layer die die Gebäude abbilden.

  • Gebäude = Hauptlayer
  • lagebezeichnungen = Querylayer der per Subformembedded im Gebäudelayer eingetragen ist
  • bes_gebaeude = Layer der per Subformembedded im Gebäudelayer eingetragen ist aber auch separat eingeschaltet werden kann