GLE-Postgis-Interne-Flurstückslisten

Aus kvwmap
Wechseln zu: Navigation, Suche

Die Views werden in ein LK-eigenes Schema "alkis_eigen" gespeichert. Bei Bedarf ändern!


View Buchung mit Eigentum

Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung. Auf die Anzeige grundstücksgleicher Rechte (Gebäudeeigentum, Erbbaurecht) wird verzichtet.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_buchung_mit_eigentum AS 
SELECT foo.flurstueck_gml_id,
   foo.buchungsblatt_gml_id,
   regexp_replace(((foo.buchung || COALESCE(foo.anteil || '
'::text, ''::text)) || COALESCE(foo.nraufteilungsplan || '
'::text, ''::text)) || COALESCE(foo.buchungstext || '
'::text, ''::text), '(^[\n\r]+)|([\n\r]+$)'::text, ''::text, 'g'::text) AS buchung
  FROM ( SELECT f.gml_id AS flurstueck_gml_id,
           g.gml_id AS buchungsblatt_gml_id,
           ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || ', Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung,
               CASE
                   WHEN s.zaehler <> 0::double precision THEN (
                   CASE
                       WHEN s.zaehler = s.nenner THEN '(Anteil nicht ermittelbar)'::text
                       ELSE (
                       CASE
                           WHEN mod(s.zaehler::numeric, ceil(s.zaehler::numeric)) = 0::numeric THEN to_char(s.zaehler::integer, 'FM999G999G999'::text)
                           ELSE replace(s.zaehler::text, '.'::text, ','::text)
                       END || '/'::text) ||
                       CASE
                           WHEN mod(s.nenner::numeric, ceil(s.nenner::numeric)) = 0::numeric THEN to_char(s.nenner::numeric, 'FM999G999G999G999'::text)
                           ELSE replace(s.nenner::text, '.'::text, ','::text)
                       END
                   END || ' Miteigentumsanteil am Grundstück'::text) || COALESCE(' verbunden mit dem Sondereigentum an '::text || s.beschreibungdessondereigentums::text, ''::text)
                   ELSE ''::text
               END AS anteil,
           ('Nr. '::text || s.nummerimaufteilungsplan::text) || ' laut Aufteilungsplan'::text AS nraufteilungsplan,
           'Buchungstext: '::text || s.buchungstext::text AS buchungstext
          FROM alkis.ax_buchungsblatt g
            LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text
            LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id
            --LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an)) -- fragt auch grundstücksgleiche Rechte ab (Gebäudeeigentum, Erbbaurecht)
            LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) -- grundstücksgleiche Rechte werden ignoriert
            LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert
         WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL
         ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer) foo;

View Buchung ohne Eigentum

Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für die Buchung, wobei eigentumsrelevante Inhalte weggelassen werden.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_buchung_ohne_eigentum AS 
SELECT f.gml_id AS flurstueck_gml_id,
   g.gml_id AS buchungsblatt_gml_id,
   ((((((((art.beschreibung::text || ': '::text) || b.bezeichnung::text) || ' '::text) || g.land::text) || g.bezirk::text) || '-'::text) || ltrim(g.buchungsblattnummermitbuchstabenerweiterung::text, '0'::text)) || '
Laufende Nummer '::text) || ltrim(s.laufendenummer::text, '0'::text) AS buchung
  FROM alkis.ax_buchungsblatt g
    LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text
    LEFT JOIN alkis.ax_buchungsstelle s ON s.istbestandteilvon = g.gml_id
    LEFT JOIN alkis.ax_flurstueck f ON f.istgebucht = s.gml_id OR (f.gml_id = ANY (s.verweistauf)) OR (f.istgebucht = ANY (s.an))
    LEFT JOIN alkis.ax_buchungsart_buchungsstelle art ON s.buchungsart = art.wert
 WHERE g.blattart = 1000 AND f.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL
 ORDER BY g.bezirk::integer, g.buchungsblattnummermitbuchstabenerweiterung::integer, s.laufendenummer::integer;

View Eigentümer mit Anschrift

Der View verknüpft Buchungsblatt, Namensnummer, Person und Anschrift und sammelt alle relevanten Informationen für das Eigentum. Ab der dritten belegten Stelle in der laufenden Namensnummer wird für jede belegte Stelle eine weitere Einrückung berechnet. Laufende Namensnummern können in der APK irrtümlich falsch geschrieben werden, z.B. "2,1". Die Abfrage versucht das abzufangen. Der View berücksichtigt eine maximal 9-stellige Tiefe der laufenden Namensnummer.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_eigentuemer_anschrift AS 
SELECT foo2.buchungsblatt_gml_id,
   foo2.lfd ||
       CASE
           WHEN foo2.eigentuemer IS NULL THEN ''::text
           ELSE '
'::text || foo2.eigentuemer
       END AS eigentuemer
  FROM ( SELECT foo.buchungsblatt_gml_id,
           (foo.whitespace || foo.lfd) || COALESCE((' zu '::text || foo.anteil) ||
               CASE
                   WHEN foo.beschrieb IS NULL THEN ''::text
                   ELSE ':'::text
               END, ''::text) AS lfd,
           ((((((((foo.whitespace || COALESCE(foo.akademischergrad::text || ' '::text, ''::text)) || COALESCE(foo.vorname::text || ' '::text, ''::text)) || foo.nachnameoderfirma::text) || COALESCE(foo.namensbestandteil, ''::text)) || COALESCE(', '::text || foo.geburtsdaten, ''::text)) ||
               CASE
                   WHEN foo.strasse IS NULL THEN ''::text
                   ELSE '
'::text
               END) || foo.whitespace) || COALESCE(foo.strasse::text || COALESCE(' '::text || foo.hausnummer::text, ''::text), ''::text)) || COALESCE(((((', '::text || foo.postleitzahlpostzustellung::text) || ' '::text) || foo.ort_post::text) || COALESCE(foo.ortsteil, ''::text)) || COALESCE(', '::text || foo.bestimmungsland::text, ''::text), ''::text) AS eigentuemer
          FROM ( SELECT DISTINCT g.gml_id AS buchungsblatt_gml_id,
                   COALESCE(n.laufendenummernachdin1421, '0'::character varying) AS order1,
                   COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar) AS order2,
                       CASE
                           WHEN COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ''::text), n.artderrechtsgemeinschaft::text) IS NULL OR n.bestehtausrechtsverhaeltnissenzu IS NULL THEN ''::text
                           ELSE ' '::text
                       END || repeat(' '::text, (
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 3),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 4),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 5),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 6),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 7),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 8),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END +
                       CASE COALESCE(split_part(replace(n.laufendenummernachdin1421::text, ','::text, '.'::text), '.'::text, 9),'')
                           WHEN '00'::text THEN 0
                           WHEN ''::text THEN 0
                           ELSE 1
                       END) * 4) AS whitespace,
                   COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ''::text), na.beschreibung::text) AS beschrieb,
                   COALESCE(COALESCE(NULLIF(n.beschriebderrechtsgemeinschaft::text, ''::text), na.beschreibung::text),
                       CASE
                           WHEN n.beschriebderrechtsgemeinschaft IS NULL AND n.artderrechtsgemeinschaft IS NULL THEN rtrim((((((((COALESCE(ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 1), '0'::text), ''::text) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 2), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 3), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 4), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 5), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 6), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 7), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 8), '0'::text), ''::text)) || COALESCE('.'::text || ltrim(split_part(n.laufendenummernachdin1421::text, '.'::text, 9), '0'::text), ''::text), '.'::text)
                           ELSE NULL::text
                       END) AS lfd,
                   p.akademischergrad,
                   p.vorname,
                   p.nachnameoderfirma,
                   COALESCE(', '::text || p.namensbestandteil::text, ''::text) AS namensbestandteil,
                   a.strasse,
                   a.hausnummer,
                   a.postleitzahlpostzustellung,
                   a.ort_post,
                   COALESCE(', OT '::text || a.ortsteil::text, ''::text) AS ortsteil,
                   a.bestimmungsland,
                   COALESCE(('geb. '::text || p.geburtsname::text) || ' '::text, ''::text) || to_char(p.geburtsdatum::timestamp with time zone, 'DD.MM.YYYY'::text) AS geburtsdaten,
                   ((
                       CASE
                           WHEN mod(n.zaehler::numeric, ceil(n.zaehler::numeric)) = 0::numeric THEN to_char(n.zaehler::integer, 'FM999G999G999'::text)
                           ELSE replace(n.zaehler::text, '.'::text, ','::text)
                       END || '/'::text) ||
                       CASE
                           WHEN mod(n.nenner::numeric, ceil(n.nenner::numeric)) = 0::numeric THEN to_char(n.nenner::numeric, 'FM999G999G999G999'::text)
                           ELSE replace(n.nenner::text, '.'::text, ','::text)
                       END) || ' Anteil'::text AS anteil
                  FROM alkis.ax_buchungsblatt g
                    LEFT JOIN alkis.ax_namensnummer n ON g.gml_id = n.istbestandteilvon
                    LEFT JOIN alkis.ax_artderrechtsgemeinschaft_namensnummer na ON n.artderrechtsgemeinschaft = na.wert
                    LEFT JOIN alkis.ax_person p ON n.benennt = p.gml_id
                    LEFT JOIN alkis.ax_anschrift a ON a.gml_id = p.hat[1]
                 WHERE g.blattart = 1000 AND g.endet IS NULL AND n.endet IS NULL AND p.endet IS NULL AND a.endet IS NULL
                 ORDER BY COALESCE(n.laufendenummernachdin1421, '0'::character varying), COALESCE(n.bestehtausrechtsverhaeltnissenzu, '0'::bpchar)) foo) foo2;

View Flurstück

Der View verknüpft Flurstück, Gemeinde und Gemarkung und sammelt alle relevanten Informationen für das Flurstück.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_flurstueck AS 
SELECT f.oid,
   f.gml_id AS flurstueck_gml_id,
   f.flurstueckskennzeichen,
       CASE
           WHEN f.abweichenderrechtszustand::text = 'true'::text THEN 'Abweichender Rechtszustand:
Durch ein Verfahren der Bodenordnung ist ein neuer Rechtszustand eingetreten, das amtliche Verzeichnis der ausführenden Stelle ist maßgebend. Dieser Nachweis entspricht nicht dem aktuellen Stand!'::text
           ELSE ''::text
       END AS abweichenderrechtszustand,
       CASE
           WHEN f.rechtsbehelfsverfahren::text = 'true'::text THEN 'Rechtsbehelfsverfahren:
Ein Rechtsbehelfsverfahren ist anhängig!'::text
           ELSE ''::text
       END AS rechtsbehelfsverfahren,
       CASE
           WHEN f.amtlicheflaeche < 1::double precision THEN round(f.amtlicheflaeche::numeric, 2)::text
           ELSE ltrim(to_char(f.amtlicheflaeche, 'FM999G999G999'::text))
       END || ' m²'::text AS amtlicheflaeche,
   gm.schluesselgesamt AS gemeinde_schluessel,
   gm.bezeichnung AS gemeinde_name,
   gk.schluesselgesamt AS gemarkung_schluessel,
   gk.bezeichnung AS gemarkung_name,
   f.flurnummer,
   f.zaehler::text || COALESCE('/'::text || f.nenner::text, ::text) AS flurstuecksnummer,
   f.wkb_geometry
  FROM alkis.ax_flurstueck f,
   alkis.ax_gemeinde gm,
   alkis.ax_gemarkung gk
 WHERE f.endet IS NULL AND gm.endet IS NULL AND gk.endet IS NULL AND f.gemeindezugehoerigkeit_gemeinde::text = gm.gemeinde::text AND f.gemarkungsnummer::text = gk.gemarkungsnummer::text;

View Grundbuchbezirk

Der View verknüpft Flurstück, Buchungsstelle und Buchungsblatt und sammelt alle relevanten Informationen für den Grundbuchbezirk.

CREATE OR REPLACE VIEW alkis_eigen.fstauszug_grundbuchbezirk AS 
SELECT DISTINCT f.gml_id AS flurstueck_gml_id,
   b.gehoertzu_land::text || b.gehoertzu_stelle::text AS schluessel_amtsgericht,
   d.bezeichnung AS name_amtsgericht,
   g.land::text || g.bezirk::text AS schluessel_gbbezirk,
   b.bezeichnung AS name_gbbezirk
  FROM alkis.ax_flurstueck f,
   alkis.ax_buchungsstelle s,
   alkis.ax_buchungsblatt g
    LEFT JOIN alkis.ax_buchungsblattbezirk b ON g.land::text = b.land::text AND g.bezirk::text = b.bezirk::text
    LEFT JOIN alkis.ax_dienststelle d ON b.gehoertzu_land::text = d.land::text AND b.gehoertzu_stelle::text = d.stelle::text
 WHERE f.endet IS NULL AND s.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL AND (f.istgebucht = s.gml_id OR ARRAY[f.gml_id] <@ s.verweistauf) AND s.istbestandteilvon = g.gml_id;

View Lage

Der View verknüpft Flurstück und Lagebezeichnung und sammelt alle relevanten Informationen für die Flurstücks-Lagebezeichnung.

ACHTUNG: Der View ermittelt eine Postleitzahl für das Flurstück durch Verschneidung mit einer eigenen Tabelle "geodaten_landkreis.plz". Schema und Tabellenname müssen angepasst werden. Wenn eine solche Tabelle nicht existiert, muss das aus dem View entfernt werden!

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.

CREATE VIEW alkis_eigen.fstauszug_lage AS 
SELECT foo.flurstueck_gml_id,
   regexp_replace((COALESCE(foo.lage_adresse_verschl, ''::text) ||
       CASE
           WHEN foo.lage_adresse_unverschl IS NULL THEN ''::text
           ELSE '
'::text
       END) || COALESCE(foo.lage_adresse_unverschl, ''::character varying)::text, '(^[\n\r]+)|([\n\r]+$)'::text, ''::text, 'g'::text) AS lage
  FROM ( SELECT f.gml_id AS flurstueck_gml_id,
           (( SELECT
                       CASE
                           WHEN lm.gml_id <> ''::bpchar THEN COALESCE(plz.plz || ' '::text, ''::text) ||
                           CASE
                               WHEN g.bezeichnung::text = 'Stralsund, Hansestadt'::text THEN 'Stralsund'::character varying
                               WHEN "position"(g.bezeichnung::text, ', Stadt'::text) > 0 THEN "substring"(g.bezeichnung::text, 0, "position"(g.bezeichnung::text, ', Stadt'::text))::character varying
                               ELSE g.bezeichnung
                           END::text
                           ELSE ''::text
                       END AS "case"
                  FROM alkis.ax_flurstueck fl
                    LEFT JOIN geodaten_landkreis.plz ON st_intersects(st_centroid(f.wkb_geometry), plz.the_geom),
                   alkis.ax_gemeinde g,
                   alkis.ax_lagebezeichnungmithausnummer lm
                 WHERE fl.gemeindezugehoerigkeit_gemeinde::text = g.gemeinde::text AND g.endet IS NULL AND (lm.gml_id = ANY (fl.weistauf)) AND fl.gml_id = f.gml_id
                LIMIT 1)) || COALESCE(array_to_string(ARRAY( SELECT (('
'::text || km.bezeichnung::text) || ' '::text) || lm.hausnummer::text
                  FROM alkis.ax_lagebezeichnungmithausnummer lm,
                   alkis.ax_lagebezeichnungkatalogeintrag km
                 WHERE lm.endet IS NULL AND km.endet IS NULL AND (lm.gml_id = ANY (f.weistauf)) AND lm.gemeinde::text = km.gemeinde::text AND lm.lage::text = km.lage::text
                 ORDER BY km.bezeichnung, lm.hausnummer), '; '::text), ''::text) AS lage_adresse_verschl,
           COALESCE(
               CASE
                   WHEN lo.lage IS NULL THEN NULL::character varying
                   ELSE ( SELECT ko.bezeichnung
                      FROM alkis.ax_lagebezeichnungkatalogeintrag ko
                     WHERE lo.gemeinde::text = ko.gemeinde::text AND lo.lage::text = ko.lage::text AND ko.endet IS NULL)
               END, lo.unverschluesselt) AS lage_adresse_unverschl
          FROM alkis.ax_flurstueck f
            LEFT JOIN alkis.ax_lagebezeichnungohnehausnummer lo ON lo.gml_id = ANY (f.zeigtauf)
         WHERE f.endet IS NULL AND lo.endet IS NULL) foo;

View Nutzung

Der View verknüpft Flurstück und Nutzung und sammelt alle relevanten Informationen für die Nutzung. Der Nutzungsartenbereich wird nicht abgefragt. Der View verwendet einen eigenen View "alkis_eigen.zustand_nutzungsart", siehe unten.

Die Zeilenumbrüche müssen unbedingt mitgenommen werden.


CREATE VIEW alkis_eigen.fstauszug_nutzung AS 
SELECT f.gml_id AS flurstueck_gml_id,
   (((nag.bereich::text || ' ('::text) || ((nas.nutzungsartengruppe::text || nas.nutzungsart::text) || nas.untergliederung1::text)) || nas.untergliederung2::text) || ')'::text AS nutzung,
   to_char(round((st_area(st_intersection(n.wkb_geometry, f.wkb_geometry))::numeric::double precision * f.amtlicheflaeche / st_area(f.wkb_geometry))::numeric,
       CASE
           WHEN f.amtlicheflaeche > 1::double precision THEN 0
           ELSE 2
       END), 'FM999G999G999'::text) || ' m²'::text AS na_flaeche,
   (((((((nag.gruppe::text ||
       CASE
           WHEN na.nutzungsart IS NOT NULL OR nu1.untergliederung1 IS NOT NULL OR nu2.untergliederung2 IS NOT NULL THEN ': '::text
           ELSE ''::text
       END) || COALESCE(na.nutzungsart::text ||
       CASE
           WHEN nu1.untergliederung1 IS NOT NULL OR nu2.untergliederung2 IS NOT NULL THEN ', '::text
           ELSE ''::text
       END, ''::text)) || COALESCE(nu1.untergliederung1::text ||
       CASE
           WHEN nu2.untergliederung2 IS NOT NULL THEN ', '::text
           ELSE ''::text
       END, ''::text)) || COALESCE(nu2.untergliederung2, ''::character varying)::text) ||
       CASE
           WHEN n.name IS NOT NULL OR nz.beschreibung IS NOT NULL OR n.bezeichnung IS NOT NULL THEN '
('::text
           ELSE ''::text
       END) || (COALESCE(n.name::text ||
       CASE
           WHEN nz.beschreibung IS NOT NULL THEN '; '::text
           ELSE ''::text
       END, ''::text) || COALESCE(nz.beschreibung::text ||
       CASE
           WHEN n.bezeichnung IS NOT NULL THEN '; '::text
           ELSE ''::text
       END, ''::text))) || COALESCE(n.bezeichnung, ''::character varying)::text) ||
       CASE
           WHEN n.name IS NOT NULL OR nz.beschreibung IS NOT NULL OR n.bezeichnung IS NOT NULL THEN ')'::text
           ELSE ''::text
       END AS bezeichnung
  FROM alkis.ax_flurstueck f,
   alkis.n_nutzung n
    LEFT JOIN alkis.n_nutzungsartenschluessel nas ON n.nutzungsartengruppe = nas.nutzungsartengruppe AND n.werteart1 = nas.werteart1 AND n.werteart2 = nas.werteart2
    LEFT JOIN alkis.n_nutzungsartengruppe nag ON nas.nutzungsartengruppe = nag.schluessel
    LEFT JOIN alkis.n_nutzungsart na ON nas.nutzungsartengruppe = na.nutzungsartengruppe AND nas.nutzungsart = na.schluessel
    LEFT JOIN alkis.n_untergliederung1 nu1 ON nas.nutzungsartengruppe = nu1.nutzungsartengruppe AND nas.nutzungsart = nu1.nutzungsart AND nas.untergliederung1 = nu1.schluessel
    LEFT JOIN alkis.n_untergliederung2 nu2 ON nas.nutzungsartengruppe = nu2.nutzungsartengruppe AND nas.nutzungsart = nu2.nutzungsart AND nas.untergliederung1 = nu2.untergliederung1 AND nas.untergliederung2 = nu2.schluessel
    LEFT JOIN alkis_eigen.zustand_nutzungsart nz ON nz.na_bereich = nas.nutzungsartengruppe AND nz.wert = n.zustand
 WHERE f.endet IS NULL AND n.endet IS NULL AND st_intersects(n.wkb_geometry, f.wkb_geometry) = true AND st_area(st_intersection(n.wkb_geometry, f.wkb_geometry)) > 0.001::double precision
 ORDER BY nas.nutzungsartengruppe;

View Zustand Nutzung

Dieser View fasst die möglichen ALKIS-Zustandbeschreibungen für die Nutzungsartenbereiche zusammen.

CREATE OR REPLACE VIEW alkis_eigen.zustand_nutzungsart AS 
SELECT 11 AS na_bereich,
   ax_zustand_wohnbauflaeche.wert,
   ax_zustand_wohnbauflaeche.beschreibung
  FROM alkis.ax_zustand_wohnbauflaeche
UNION
SELECT 12 AS na_bereich,
   ax_zustand_industrieundgewerbeflaeche.wert,
   ax_zustand_industrieundgewerbeflaeche.beschreibung
  FROM alkis.ax_zustand_industrieundgewerbeflaeche
UNION
SELECT 13 AS na_bereich,
   ax_zustand_halde.wert,
   ax_zustand_halde.beschreibung
  FROM alkis.ax_zustand_halde
UNION
SELECT 14 AS na_bereich,
   ax_zustand_bergbaubetrieb.wert,
   ax_zustand_bergbaubetrieb.beschreibung
  FROM alkis.ax_zustand_bergbaubetrieb
UNION
SELECT 15 AS na_bereich,
   ax_zustand_tagebaugrubesteinbruch.wert,
   ax_zustand_tagebaugrubesteinbruch.beschreibung
  FROM alkis.ax_zustand_tagebaugrubesteinbruch
UNION
SELECT 16 AS na_bereich,
   ax_zustand_flaechegemischternutzung.wert,
   ax_zustand_flaechegemischternutzung.beschreibung
  FROM alkis.ax_zustand_flaechegemischternutzung
UNION
SELECT 17 AS na_bereich,
   ax_zustand_flaechebesondererfunktionalerpraegung.wert,
   ax_zustand_flaechebesondererfunktionalerpraegung.beschreibung
  FROM alkis.ax_zustand_flaechebesondererfunktionalerpraegung
UNION
SELECT 18 AS na_bereich,
   ax_zustand_sportfreizeitunderholungsflaeche.wert,
   ax_zustand_sportfreizeitunderholungsflaeche.beschreibung
  FROM alkis.ax_zustand_sportfreizeitunderholungsflaeche
UNION
SELECT 19 AS na_bereich,
   ax_zustand_friedhof.wert,
   ax_zustand_friedhof.beschreibung
  FROM alkis.ax_zustand_friedhof
UNION
SELECT 21 AS na_bereich,
   ax_zustand_strasse.wert,
   ax_zustand_strasse.beschreibung
  FROM alkis.ax_zustand_strasse
UNION
SELECT 22 AS na_bereich,
   ax_zustand_strasse.wert,
   ax_zustand_strasse.beschreibung
  FROM alkis.ax_zustand_strasse
UNION
SELECT 23 AS na_bereich,
   ax_zustand_strasse.wert,
   ax_zustand_strasse.beschreibung
  FROM alkis.ax_zustand_strasse
UNION
SELECT 24 AS na_bereich,
   ax_zustand_bahnverkehr.wert,
   ax_zustand_bahnverkehr.beschreibung
  FROM alkis.ax_zustand_bahnverkehr
UNION
SELECT 25 AS na_bereich,
   ax_zustand_flugverkehr.wert,
   ax_zustand_flugverkehr.beschreibung
  FROM alkis.ax_zustand_flugverkehr
UNION
SELECT 26 AS na_bereich,
   ax_zustand_schiffsverkehr.wert,
   ax_zustand_schiffsverkehr.beschreibung
  FROM alkis.ax_zustand_schiffsverkehr;