zusammengefasste Bauwerkstabelle: Unterschied zwischen den Versionen

Aus kvwmap
Wechseln zu: Navigation, Suche
K (Hinweise)
(Abfragen zum Füllen der Tabelle)
Zeile 87: Zeile 87:
 
leider ist mir das so nicht geglückt. Das Feld wurde daher auf 'NULL' gesetzt.  
 
leider ist mir das so nicht geglückt. Das Feld wurde daher auf 'NULL' gesetzt.  
 
Habt ihr da eine Lösung parat?
 
Habt ihr da eine Lösung parat?
 +
 +
--[[Benutzer:Rahn|Rahn]] ([[Benutzer Diskussion:Rahn|Diskussion]]) 15:02, 26. Jun. 2015 (CEST) So müsste es gehen:
 +
 +
  ARRAY['zustand=' || zustand, 'objekthoehe='|| objekthoehe] AS sonstigeeigenschaften,
  
 
===ax_bauwerkoderanlagefuerindustrieundgewerbe===
 
===ax_bauwerkoderanlagefuerindustrieundgewerbe===

Version vom 26. Juni 2015, 14:02 Uhr

zurück zu Gruppen_und_Themen_für_ALKIS#Bauwerke

Hinweise

--HolgerR (Diskussion) 13:57, 26. Jun. 2015 (CEST)

  • Die Schlüsselfelder wurden als Schlüsselwerte in die Tabellen übernommen.
  • Das Feld sonsstigeeigenschaften, in dem die Einzeleigenschaften zu den einzelnen Tabelle gespeichert werden sollen bekomme ich nicht gefüllt (s.u.)
  • In der Tabelle ax_transportanlagen ist das Feld art plötzlich ein VarChar, hab ich erst einmal als Integer definiert. Eventuell müsste die Tabellendefinition angepasst werden
  • Die Klassen zu der Bauwerksfunktion geht von 1-10, entsprechend der alphanumerischen Sortierung der Tabellennamen
  • Der Geometrietyp ist entsprechend der Mapserverdefinition zugewiesen worden:
    • 0 = Point
    • 1 = Linestring
    • 2 = Polygon

Tabellendefinition

CREATE TABLE alkis.lk_bauwerke
(
  ogc_fid serial NOT NULL,
  gml_id character varying(16) NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass character varying,
  name character varying,
  geomtype integer,
  class integer NOT NULL,
  bauwerksfunktion integer,
  art integer,
  funktion integer,
  sonstigeeigenschaften character varying[],
  gehoertzubauwerk character varying, 
  gehoertzu character varying, 
  zeigtauf character varying, 
  wkb_geometry geometry,
  CONSTRAINT lk_bauwerke_pk PRIMARY KEY (ogc_fid),
  CONSTRAINT enforce_dims_wkb_geometry CHECK (st_ndims(wkb_geometry) = 2),
  CONSTRAINT enforce_srid_wkb_geometry CHECK (st_srid(wkb_geometry) = 25833)
)
WITH (
  OIDS=TRUE
);

INSERT INTO public.geometry_columns VALUES ('', 'alkis', 'lk_bauwerke', 'wkb_geometry', 2, 25833, 'GEOMETRY');

COMMENT ON COLUMN alkis.lk_bauwerke.gml_id IS 'Identifikator, global eindeutig';
COMMENT ON COLUMN alkis.lk_bauwerke.class IS 'Geometrietyp 0=Point, 1=Linstring, 2=Polygon';
COMMENT ON COLUMN alkis.lk_bauwerke.class IS 'Klassifizierung innerhalb der Nutzung. Aus verschiedenen Feldern importiert. Siehe "bauwerk_meta.fldclass".';
COMMENT ON COLUMN alkis.lk_bauwerke.sonstigeeigenschaften IS 'Sonstige Eigenschaften aus den einzenen Bauwerkstypen';
COMMENT ON COLUMN alkis.lk_bauwerke.gehoertzubauwerk IS 'Beziehung zu ax_bauwerkeeinrichtungenundsonstigeangaben (0..1): ''AX_SonstigesBauwerkOderSonstigeEinrichtung'' kann einem anderen Bauwerk zugeordnet werden.';
COMMENT ON COLUMN alkis.lk_bauwerke.gehoertzu IS 'Beziehung zu ax_gebaeude (0..1): ''AX_SonstigesBauwerkOderSonstigeEinrichtung'' kann einem Gebäude zugeordnet werden, soweit dies fachlich erforderlich ist.';
COMMENT ON COLUMN alkis.lk_bauwerke.zeigtauf IS 'Beziehung zu ax_lagebezeichnungmithausnummer (0..*): ''Turm'' zeigt auf eine ''Lagebezeichnung mit Hausnummer''.';

CREATE INDEX lk_bauwerke_geom_idx
  ON alkis.lk_bauwerke
  USING gist
  (wkb_geometry);

CREATE UNIQUE INDEX lk_bauwerke_gml
  ON alkis.lk_bauwerke
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

CREATE INDEX lk_bauwerke_gz
  ON alkis.lk_bauwerke
  USING btree
  (gehoertzu COLLATE pg_catalog."default");

CREATE INDEX lk_bauwerke_gzb
  ON alkis.lk_bauwerke
  USING btree
  (gehoertzubauwerk COLLATE pg_catalog."default");

CREATE INDEX lk_bauwerke_za
  ON alkis.lk_bauwerke
  USING btree
  (zeigtauf COLLATE pg_catalog."default");

Abfragen zum Füllen der Tabelle

--HolgerR (Diskussion) 13:52, 26. Jun. 2015 (CEST)
Ich hatte versucht, das Feld sonstigeeigenschaften (ein Array) durch folgenden Ausdruck zu füllen

'{"zustand="::varchar || zustand), "objekthoehe="|| objekthoehe}' AS sonstigeeigenschaften

leider ist mir das so nicht geglückt. Das Feld wurde daher auf 'NULL' gesetzt. Habt ihr da eine Lösung parat?

--Rahn (Diskussion) 15:02, 26. Jun. 2015 (CEST) So müsste es gehen:

  ARRAY['zustand=' || zustand, 'objekthoehe='|| objekthoehe] AS sonstigeeigenschaften,

ax_bauwerkoderanlagefuerindustrieundgewerbe

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT  
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  1 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{"zustand="::varchar || zustand), "objekthoehe="|| objekthoehe}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_bauwerkoderanlagefuerindustrieundgewerbe
;

ax_bauwerkoderanlagefuersportfreizeitunderholung

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  2 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{'sportart='|| sportart}' AS sonstigeeigenschaften, 
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_bauwerkoderanlagefuersportfreizeitunderholung
;

ax_einrichtunginoeffentlichenbereichen

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  NULL AS name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  3 AS class,  -- Klasse zur Bauwerksfunktion
  NULL AS bauwerksfunktion, 
  art, 
  NULL AS funktion, 
--  '{'kilometerangabe='|| kilometerangabe}' AS sonstigeeigenschaften, 
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_einrichtunginoeffentlichenbereichen
;

ax_heilquellegasquelle

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  4 AS class,  -- Klasse zur Bauwerksfunktion
  NULL AS bauwerksfunktion, 
  art, 
  NULL AS funktion, 
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_heilquellegasquelle
;

ax_historischesbauwerkoderhistorischeeinrichtung

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  5 AS class,  -- Klasse zur Bauwerksfunktion
  NULL AS bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{'archaeologischertyp='|| archaeologischertyp}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften, 
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_historischesbauwerkoderhistorischeeinrichtung
;

ax_leitung

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  NULL AS name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  6 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{'spannungsebene='|| spannungsebene}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften, 
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_leitung
;

ax_sonstigesbauwerkodersonstigeeinrichtung

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  7 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  funktion, 
--  '{'description='|| description}' AS sonstigeeigenschaften, 
  NULL AS sonstigeeigenschaften, 
  gehoertzubauwerk, 
  gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_sonstigesbauwerkodersonstigeeinrichtung
;

ax_transportanlage

Achtung

hier ist das Feld art plötzlich ein varchar, hab ich erst einmal als Integer umgewandelt.

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  8 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  art::int, 
  NULL AS funktion, 
--  '{'lagezurerdoberflaeche='|| lagezurerdoberflaeche, 'produkt='|| produkt}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_transportanlage
;

ax_turm

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  9 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{'zustand='|| zustand}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_turm
;

ax_vorratsbehaelterspeicherbauwerk

INSERT INTO 
  alkis.lk_bauwerke (
    gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, name, geomtype, class, 
    bauwerksfunktion, art, funktion, sonstigeeigenschaften, gehoertzubauwerk, gehoertzu, zeigtauf, wkb_geometry ) 
SELECT 
  gml_id, identifier, beginnt, endet, advstandardmodell, sonstigesmodell, anlass, 
  name, 
  CASE 
    WHEN GeometryType(wkb_geometry) = 'POINT' THEN 0
    WHEN GeometryType(wkb_geometry) = 'LINESTRING' THEN 1
    WHEN GeometryType(wkb_geometry) = 'POLYGON' THEN 2
  END as geomtype, 
  10 AS class,  -- Klasse zur Bauwerksfunktion
  bauwerksfunktion, 
  NULL AS art, 
  NULL AS funktion, 
--  '{'speicherinhalt='|| speicherinhalt, 'lagezurerdoberflaeche='|| lagezurerdoberflaeche}' AS sonstigeeigenschaften,
  NULL AS sonstigeeigenschaften,
  NULL AS gehoertzubauwerk, 
  NULL AS gehoertzu, 
  NULL AS zeigtauf, 
  wkb_geometry
FROM 
  alkis.ax_vorratsbehaelterspeicherbauwerk
;

zurück zu Gruppen_und_Themen_für_ALKIS#Bauwerke