Ignore:
Timestamp:
09/10/14 12:08:18 (7 years ago)
Author:
frank.jaeger
Message:

Umstellung von PostNAS 0.7 auf PostNAS 0.8, ohne Tabelle "alkis_beziehungen".

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/pp_definition.sql

    r328 r330  
    11 
    2 -- ALKIS PostNAS 0.7 
     2-- ALKIS PostNAS 0.8 
    33 
    44-- Post Processing (pp_) Teil 1: Anlegen der Tabellen und Views 
    55 
     6-- Koordinatensystem ÃŒbergeben mit "psql  .. -v alkis_epsg=25832" 
     7-- :alkis_epsg=25832 
     8 
    69-- Stand  
    7  
    810--  2012-02-13 PostNAS 07, Umbenennung 
    911--  2012-02-17 Optimierung 
     
    1517--  2013-04-18 Kommentare. 
    1618--  2012-10-24 Neue Tabelle fÃŒr die PrÀsentation von Straßennamen und -Klassifikationen 
    17 --  2014-08-25 Straßennamen aufteilen in _P und L 
    18 --  2014-09-08 Korrektur 
     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 
    1924 
    2025-- ============================ 
     
    3237 
    3338-- ToDo: 
    34  
    3539-- Muss *multi*-Polygon sein? Gibt es "zerrissene" Fluren/Gemarkungen? 
    3640-- Der View "gemeinde_gemarkung" kann entfallen, wenn Navigation umgestellt wurde. 
     
    3842SET client_encoding = 'UTF-8'; 
    3943 
    40 -- Alles auf Anfang! 
    41  
    42 -- DROP VIEW gemeinde_person_typ1; 
    43 -- DROP VIEW gemeinde_person_typ2; 
    44 -- DROP VIEW gemeinde_gemarkung; 
    45 -- DROP TABLE pp_gemeinde; 
    46 -- DROP TABLE pp_gemarkung; 
    47 -- DROP TABLE pp_flur; 
    48  
     44-- Alles auf Anfang 
     45/* 
     46 DROP VIEW IF EXISTS gemeinde_person_typ1; 
     47 DROP VIEW IF EXISTS gemeinde_person_typ2; 
     48 DROP VIEW IF EXISTS gemeinde_person_statistik; 
     49 DROP VIEW IF EXISTS gemeinde_gemarkung; 
     50 DROP VIEW IF EXISTS pp_gemeinde_analyse; 
     51 DROP VIEW IF EXISTS pp_gemarkung_analyse; 
     52 
     53 DROP TABLE gemeinde_person; 
     54 DROP TABLE pp_gemeinde; 
     55 DROP TABLE pp_gemarkung; 
     56 DROP TABLE pp_flur; 
     57 DROP TABLE pp_flurstueck_nr; 
     58 DROP TABLE pp_strassenname_p; 
     59 DROP TABLE pp_strassenname_l; 
     60*/ 
    4961 
    5062-- Tabelle fuer Gemeinden 
     
    5264 
    5365  CREATE TABLE pp_gemeinde ( 
    54     gid                 serial, 
    55     land                integer NOT NULL, 
    56     regierungsbezirk    integer, 
    57     kreis               integer, 
    58     gemeinde            integer NOT NULL, 
    59     gemeindename        character varying(80), 
    60  -- gkz                 character varying(03),  -- wird (noch) nicht benutzt 
    61     anz_gemarkg         integer,                -- Anzahl Gemarkungen 
     66    gid                serial, 
     67    land               character varying NOT NULL, 
     68    regierungsbezirk   character varying, 
     69    kreis              character varying, 
     70    gemeinde           character varying NOT NULL, 
     71    gemeindename       character varying(80), 
     72 -- gkz                character varying(03),    -- wird (noch) nicht benutzt 
     73    anz_gemarkg        integer,                  -- Anzahl Gemarkungen 
    6274    CONSTRAINT pp_gemeinde_pk PRIMARY KEY (land, gemeinde) 
    6375  ); 
     
    6577CREATE UNIQUE INDEX pp_gemeinde_gid_ix ON pp_gemeinde (gid); 
    6678 
    67 -- Gesamtflaeche 
    68 SELECT AddGeometryColumn('pp_gemeinde','the_geom','25832','MULTIPOLYGON',2); 
     79-- GesamtflÀche 
     80SELECT AddGeometryColumn('pp_gemeinde','the_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    6981CREATE INDEX pp_gemeinde_gidx ON pp_gemeinde USING gist(the_geom); 
    7082 
    71 -- vereinfachte Gesamtflaeche 
    72 SELECT AddGeometryColumn('pp_gemeinde','simple_geom','25832','MULTIPOLYGON',2); 
     83-- vereinfachte GesamtflÀche 
     84SELECT AddGeometryColumn('pp_gemeinde','simple_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    7385CREATE INDEX pp_gemeinde_sgidx ON pp_gemeinde USING gist(simple_geom); 
    7486 
     
    92104 
    93105  CREATE TABLE pp_gemarkung ( 
    94     gid                 serial, 
    95     land                integer NOT NULL, 
    96     regierungsbezirk    integer, 
    97     kreis               integer, 
    98     gemeinde            integer NOT NULL,       -- fast ein Foreign-Key Constraint 
    99     gemarkung           integer NOT NULL, 
    100     gemarkungsname      character varying(80), 
    101     anz_flur            integer,                -- Anzahl Fluren 
     106    gid                serial, 
     107    land               character varying NOT NULL, 
     108    regierungsbezirk   character varying, 
     109    kreis              character varying, 
     110    gemeinde           character varying NOT NULL, -- fast ein Foreign-Key Constraint 
     111    gemarkung          character varying NOT NULL, 
     112    gemarkungsname     character varying(80), 
     113    anz_flur           integer,                -- Anzahl Fluren 
    102114    CONSTRAINT pp_gemarkung_pk PRIMARY KEY (land, gemarkung) 
    103115  ); 
     
    106118 
    107119-- GesamtflÀche 
    108 SELECT AddGeometryColumn('pp_gemarkung','the_geom','25832','MULTIPOLYGON',2); 
     120SELECT AddGeometryColumn('pp_gemarkung','the_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    109121CREATE INDEX pp_gemarkung_gidx ON pp_gemarkung USING gist(the_geom); 
    110122 
    111123-- vereinfachte GesamtflÀche 
    112 SELECT AddGeometryColumn('pp_gemarkung','simple_geom','25832','MULTIPOLYGON',2); 
     124SELECT AddGeometryColumn('pp_gemarkung','simple_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    113125CREATE INDEX pp_gemarkung_sgidx ON pp_gemarkung USING gist(simple_geom); 
    114126 
     
    125137 
    126138  CREATE TABLE pp_flur ( 
    127     gid                 serial, 
    128     land                integer NOT NULL, 
    129     regierungsbezirk    integer, 
    130     kreis               integer, 
    131     gemarkung           integer NOT NULL, 
    132     flurnummer          integer NOT NULL, 
    133     anz_fs              integer,                -- Anzahl FlurstÃŒcke 
     139    gid                serial, 
     140    land               character varying NOT NULL, 
     141    regierungsbezirk   character varying, 
     142    kreis              character varying, 
     143    gemarkung          character varying NOT NULL, 
     144    flurnummer         integer NOT NULL, 
     145    anz_fs             integer,              -- Anzahl FlurstÃŒcke 
    134146    CONSTRAINT pp_flur_pk PRIMARY KEY (land, gemarkung, flurnummer) 
    135147  ); 
     
    139151 
    140152-- GesamtflÀche 
    141 SELECT AddGeometryColumn('pp_flur','the_geom','25832','MULTIPOLYGON',2); 
     153SELECT AddGeometryColumn('pp_flur','the_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    142154CREATE INDEX pp_flur_gidx ON pp_flur USING gist(the_geom); 
    143155 
    144156-- vereinfachte Gesamtflaeche 
    145 SELECT AddGeometryColumn('pp_flur','simple_geom','25832','MULTIPOLYGON',2); 
     157SELECT AddGeometryColumn('pp_flur','simple_geom',:alkis_epsg,'MULTIPOLYGON',2); 
    146158CREATE INDEX pp_flur_sgidx ON pp_flur USING gist(simple_geom); 
    147159 
     
    169181 
    170182  CREATE TABLE gemeinde_person ( 
    171     land                integer, 
    172     regierungsbezirk    integer, 
    173     kreis               integer, 
    174     gemeinde            integer, 
    175     person              character varying(16), 
    176     buchtyp             integer, 
     183    land                character varying, 
     184    regierungsbezirk    character varying, 
     185    kreis               character varying, 
     186    gemeinde            character varying, 
     187    person              character varying, 
     188    buchtyp             integer, 
    177189    CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person) 
    178190  ); 
     
    194206  CREATE TABLE pp_flurstueck_nr ( 
    195207    gid         serial, 
    196     fsgml       character(16), 
    197     fsnum       character varying(10),  -- zzzzz/nnnn 
     208    fsgml            character varying, 
     209    fsnum            character varying(10),  -- zzzzz/nnnn 
    198210    CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid)  --, 
    199211-- Foreign Key 
     
    206218  ); 
    207219 
    208 SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom','25832','POINT',2); 
     220SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom',:alkis_epsg,'POINT',2); 
    209221 
    210222-- Geometrischer Index 
    211 CREATE INDEX pp_flurstueck_nr_gidx ON pp_flurstueck_nr USING gist(the_geom); 
    212  
    213 -- Foreig-Key Index 
    214 CREATE INDEX fki_pp_flurstueck_nr_gml ON pp_flurstueck_nr(fsgml); 
     223CREATE INDEX pp_flurstueck_nr_gidx    ON pp_flurstueck_nr USING gist  (the_geom); 
     224CREATE INDEX fki_pp_flurstueck_nr_gml ON pp_flurstueck_nr USING btree (fsgml); 
    215225 
    216226COMMENT ON TABLE  pp_flurstueck_nr           IS 'Post-Processing: Position der FlurstÃŒcksnummer in der Karte'; 
    217 COMMENT ON COLUMN pp_flurstueck_nr.fsgml     IS 'gml_id des zugehörigen FlurstÃŒcks-Objektes'; 
     227COMMENT ON COLUMN pp_flurstueck_nr.fsgml     IS 'gml_id des zugehörigen FlurstÃŒcks-Objektes ( <- ap_pto.dientZurDarstellungVon)'; 
    218228COMMENT ON COLUMN pp_flurstueck_nr.fsnum     IS 'Label, Darzustellende FS-Nummer als Bruch'; 
    219229COMMENT ON COLUMN pp_flurstueck_nr.the_geom  IS 'Position der FlurstÃŒcksnummer in der Karte'; 
     
    228238-- sind *UND* die Navigation an die neuen Tabellen angepasst ist. 
    229239 
    230 CREATE VIEW gemeinde_gemarkung 
     240CREATE OR REPLACE VIEW gemeinde_gemarkung 
    231241AS 
    232242  SELECT g.land, g.regierungsbezirk, g.kreis, g.gemeinde, k.gemarkung, g.gemeindename, k.gemarkungsname 
    233243  FROM pp_gemarkung k 
    234244  JOIN pp_gemeinde  g  
    235     ON k.land = g.land  
    236    AND k.gemeinde = g.gemeinde; 
     245    ON k.land = g.land AND k.gemeinde = g.gemeinde; 
    237246 
    238247COMMENT ON VIEW gemeinde_gemarkung  
     
    244253 
    245254-- "Normale" Buchungen 
    246  
    247 CREATE VIEW gemeinde_person_typ1 
     255-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen 
     256CREATE OR REPLACE VIEW gemeinde_person_typ1 
    248257AS 
    249   SELECT DISTINCT 
    250     p.gml_id          AS person,  
    251     g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
    252  
    253   FROM ax_person               p 
    254  
    255 -- Person < benennt < Namensnummer 
    256   JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer 
    257   JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id 
    258  
    259 -- Namensnummer > istBestandteilVon > Blatt 
    260   JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt 
    261   JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id 
    262  
    263 -- Blatt < istBestandteilVon < buchungsStelle 
    264   JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle 
    265   JOIN ax_buchungsstelle       s   ON bbg.beziehung_von  = s.gml_id  
    266  
    267 -- buchungsStelle < istGebucht < flurstÃŒck 
    268   JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s.gml_id  -- Bez. Stelle - FlurstÃŒck 
    269   JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id  
    270  
    271   JOIN ax_gemarkung            k   ON f.land             = k.land  
    272                                   AND f.gemarkungsnummer = k.gemarkungsnummer  
    273   JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung 
    274  
    275   WHERE bpn.beziehungsart = 'benennt'  
    276     AND bnb.beziehungsart = 'istBestandteilVon' 
    277     AND bbg.beziehungsart = 'istBestandteilVon' 
    278     AND bsf.beziehungsart = 'istGebucht'; 
    279  
    280 COMMENT ON VIEW gemeinde_person_typ1 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.'; 
     258  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
     259  FROM ax_person          p 
     260  JOIN ax_namensnummer    n  ON n.benennt = p.gml_id           -- Person <benennt< Namensnummer 
     261  JOIN ax_buchungsblatt   b  ON n.istbestandteilvon = b.gml_id -- Namensnummer >istBestandteilVon> Blatt 
     262  JOIN ax_buchungsstelle  s  ON s.istbestandteilvon = b.gml_id -- Blatt <istBestandteilVon< buchungsStelle 
     263  JOIN ax_flurstueck      f  ON f.istgebucht = s.gml_id        -- buchungsStelle <istGebucht< flurstÃŒck 
     264  JOIN ax_gemarkung       k  ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     265  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer = g.gemarkung; 
     266 
     267COMMENT ON VIEW gemeinde_person_typ1  
     268  IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.'; 
    281269 
    282270 
    283271-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen 
    284  
    285 CREATE VIEW gemeinde_person_typ2 
     272-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen 
     273CREATE OR REPLACE VIEW gemeinde_person_typ2 
    286274AS 
    287   SELECT DISTINCT 
    288     p.gml_id          AS person,  
    289     g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
    290   FROM ax_person               p 
    291  
    292 -- Person < benennt < Namensnummer 
    293   JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer 
    294   JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id 
    295  
    296 -- Namensnummer > istBestandteilVon > Blatt 
    297   JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt 
    298   JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id 
    299  
    300 -- Blatt < istBestandteilVon < buchungsStelle1 
    301   JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle 
    302   JOIN ax_buchungsstelle       s1  ON bbg.beziehung_von  = s1.gml_id  
    303  
    304 -- buchungsStelle2 < an < buchungsStelle1 
    305   JOIN alkis_beziehungen      bss  ON bss.beziehung_von  = s1.gml_id  -- Bez. Stelle  - Stelle 
    306   JOIN ax_buchungsstelle       s2  ON bss.beziehung_zu   = s2.gml_id  
    307  
    308 -- buchungsStelle2 < istGebucht < flurstÃŒck 
    309   JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s2.gml_id  -- Bez. Stelle - FlurstÃŒck 
    310   JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id  
    311  
    312   JOIN ax_gemarkung            k   ON f.land             = k.land  
    313                                   AND f.gemarkungsnummer = k.gemarkungsnummer  
    314   JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung 
    315  
    316   WHERE bpn.beziehungsart = 'benennt'  
    317     AND bnb.beziehungsart = 'istBestandteilVon' 
    318     AND bbg.beziehungsart = 'istBestandteilVon' 
    319     AND bss.beziehungsart = 'an' 
    320     AND bsf.beziehungsart = 'istGebucht' 
    321  -- LIMIT 100  -- Test-Option 
    322 ; 
    323  
    324 COMMENT ON VIEW gemeinde_person_typ2 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.'; 
    325  
     275  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
     276  FROM ax_person          p 
     277  JOIN ax_namensnummer    n  ON n.benennt = p.gml_id            -- Person <benennt< Namensnummer 
     278  JOIN ax_buchungsblatt   b  ON n.istBestandteilVon = b.gml_id  -- Namensnummer >istBestandteilVon> Blatt 
     279  JOIN ax_buchungsstelle  s1 ON s1.istbestandteilvon = b.gml_id -- Blatt <istBestandteilVon< buchungsStelle1 
     280  JOIN ax_buchungsstelle  s2 ON s2.gml_id = ANY(s1.an)          -- buchungsStelle2 <(recht)an< buchungsStelle1 
     281  JOIN ax_flurstueck      f  ON f.istgebucht = s2.gml_id        -- buchungsStelle2 < istGebucht < flurstÃŒck 
     282  JOIN ax_gemarkung       k  ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     283  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer = g.gemarkung; 
     284 
     285COMMENT ON VIEW gemeinde_person_typ2  
     286  IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.'; 
    326287 
    327288-- Statistik ÃŒber die Buchungs-Typen je Gemeinde 
     289-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflösen 
    328290CREATE VIEW gemeinde_person_statistik 
    329291AS 
     
    360322  FROM pp_gemarkung; 
    361323 
     324-- 2014-08-26 Aus Version "pp_strassenname" werden die Varianten *_p und *_l 
    362325 
    363326-- Variante fÃŒr Punkt-Geometrie 
    364 -- Tabelle "pp_strassenname_p" speichert den VIEW "ap_pto_stra". 
    365327CREATE TABLE pp_strassenname_p  
    366328(   gid                    serial NOT NULL, 
    367     gml_id                 character(16), 
     329    gml_id                 character varying, 
    368330 -- advstandardmodell      character varying[], 
    369331    schriftinhalt          character varying,      -- Label: anzuzeigender Text 
     
    378340 
    379341-- :alkis_epsg = 25832 
    380 SELECT AddGeometryColumn('pp_strassenname_p','the_geom',25832,'POINT',2); 
     342SELECT AddGeometryColumn('pp_strassenname_p','the_geom',:alkis_epsg,'POINT',2); 
    381343CREATE INDEX pp_snamp_gidx ON pp_strassenname_p USING gist(the_geom);  
    382344 
     
    384346 
    385347  COMMENT ON COLUMN pp_strassenname_p.gid            IS 'EditierschlÃŒssel der Tabelle'; 
    386 --COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'ObjektschlÃŒssel des PrÀsentationsobjektes aus ap_pto. Zur Verbindung mit Katalog.'; 
    387348  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.'; 
    388349  COMMENT ON COLUMN pp_strassenname_p.schriftinhalt  IS 'Label, darzustellender Name der Straße oder Klassifikation'; 
     
    394355 
    395356-- Variante fÃŒr Linien-Geometrie 
    396 -- Tabelle "pp_strassenname_l" speichert den VIEW "ap_lto_stra". 
    397357CREATE TABLE pp_strassenname_l  
    398358(   gid                    serial NOT NULL, 
    399     gml_id                 character(16), 
     359    gml_id                 character varying, 
    400360    schriftinhalt          character varying,      -- Label: anzuzeigender Text 
    401361    hor                    character varying, 
     
    407367 
    408368-- :alkis_epsg = 25832 
    409 SELECT AddGeometryColumn('pp_strassenname_l','the_geom',25832,'LINESTRING',2); -- Hier liegt der Unterschied 
     369SELECT AddGeometryColumn('pp_strassenname_l','the_geom',:alkis_epsg,'LINESTRING',2); -- Hier liegt der Unterschied 
    410370CREATE INDEX pp_snaml_gidx ON pp_strassenname_l USING gist(the_geom);  
    411371 
     
    420380  COMMENT ON COLUMN pp_strassenname_l.the_geom       IS 'Position (Punkt) der Labels in der Karte'; 
    421381 
     382 
    422383-- ENDE -- 
Note: See TracChangeset for help on using the changeset viewer.