Changeset 140 for trunk/data/konvert


Ignore:
Timestamp:
12/09/11 14:29:57 (10 years ago)
Author:
frank.jaeger
Message:

Filter auf Gemeinde bei Navigation bei Suche nach Eigentümer. Dazu Hilfstabelle aufbauen.

Location:
trunk/data/konvert/postnas_0.6
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/konvert/postnas_0.6/gemeinden_definition.sql

    r105 r140  
    11 
    22-- ALKIS PostNAS 0.6 
     3 
     4 
     5-- Teil 1: Anlegen der Tabellen 
     6 
     7 
     8-- Stand  
     9 
     10--  2011-07-25 PostNAS 06, Umbenennung 
     11--  2011-12-08 Person -> Gemeinde 
     12 
     13SET client_encoding = 'UTF-8'; 
     14 
     15-- Alles auf Anfang! 
     16 
     17-- DROP VIEW gemeinde_person_typ1; 
     18-- DROP VIEW gemeinde_person_typ2; 
     19 
     20-- DROP TABLE gemeinde_gemarkung; 
     21 
    322 
    423-- ======================================================= 
     
    1231-- Da nicht stÀndig mit 'SELECT DISTINCT' sÀmtliche FlurstÃŒcke durchsucht werden können,  
    1332-- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden.  
    14  
    15  
    16 -- Teil 1: Anlegen der Tabelle 
    17  
    18 -- Stand  
    19  
    20 --  2011-07-25 PostNAS 06, Umbenennung 
    21  
    22  
    23 SET client_encoding = 'UTF-8'; 
    24  
    25 -- Alles auf Anfang! 
    26  
    27 DROP TABLE gemeinde_gemarkung; 
    2833 
    2934CREATE TABLE gemeinde_gemarkung ( 
     
    4550 
    4651COMMENT ON COLUMN gemeinde_gemarkung.gkz            IS 'Gemeindekennziffer fÃŒr Mandant'; 
     52 
     53 
     54-- ======================================================= 
     55-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden 
     56-- ======================================================= 
     57 
     58-- Die Feststellung, ob eine Person (Mit-) EigentÃŒmer von mindestens einem 
     59-- FlurstÃŒck in einer Gemeinde ist, geht ÃŒber viele Relationen. 
     60-- Dabei kann es mehrere Varianten geben. 
     61-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in 
     62-- der Navigation auf einfache Art verwendet werden kann.  
     63 
     64 
     65-- DROP TABLE gemeinde_person; 
     66 
     67CREATE TABLE gemeinde_person ( 
     68  land                  integer, 
     69  regierungsbezirk      integer, 
     70  kreis                 integer, 
     71  gemeinde              integer, 
     72  person                character varying(16),  
     73  buchtyp               integer, 
     74  CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person) 
     75); 
     76 
     77 
     78COMMENT ON TABLE  gemeinde_person                IS 'Person ist EigentÃŒmer von mindestens einem FlurstÃŒck in der Gemeinde'; 
     79COMMENT ON COLUMN gemeinde_person.gemeinde       IS 'Gemeindenummer'; 
     80COMMENT ON COLUMN gemeinde_person.buchtyp        IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle'; 
     81COMMENT ON COLUMN gemeinde_person.person         IS 'gml_id von Person'; 
     82 
     83-- Index zum Filtern in der Buchauskunft 
     84CREATE INDEX person_gemeinde  ON gemeinde_person (person, gemeinde); 
     85 
     86 
     87-- ======================================================= 
     88-- VIEWs  fuer die Zuordnung vom EigentÃŒmern zu Gemeinden 
     89-- ======================================================= 
     90 
     91-- "Normale" Buchungen 
     92 
     93CREATE VIEW gemeinde_person_typ1 
     94AS 
     95  SELECT DISTINCT 
     96    p.gml_id          AS person,  
     97    g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
     98 
     99  FROM ax_person               p 
     100 
     101-- Person < benennt < Namensnummer 
     102  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer 
     103  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id 
     104 
     105-- Namensnummer > istBestandteilVon > Blatt 
     106  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt 
     107  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id 
     108 
     109-- Blatt < istBestandteilVon < buchungsStelle 
     110  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle 
     111  JOIN ax_buchungsstelle       s   ON bbg.beziehung_von  = s.gml_id  
     112 
     113-- buchungsStelle < istGebucht < flurstÃŒck 
     114  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s.gml_id  -- Bez. Stelle - FlurstÃŒck 
     115  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id  
     116 
     117  JOIN ax_gemarkung            k   ON f.land             = k.land  
     118                                  AND f.gemarkungsnummer = k.gemarkungsnummer  
     119  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung 
     120 
     121  WHERE bpn.beziehungsart = 'benennt'  
     122    AND bnb.beziehungsart = 'istBestandteilVon' 
     123    AND bbg.beziehungsart = 'istBestandteilVon' 
     124    AND bsf.beziehungsart = 'istGebucht' 
     125; 
     126 
     127COMMENT ON VIEW gemeinde_person_typ1 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.'; 
     128 
     129 
     130-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen 
     131 
     132CREATE VIEW gemeinde_person_typ2 
     133AS 
     134  SELECT DISTINCT 
     135    p.gml_id          AS person,  
     136  --bpn.beziehungsart AS bpnbez,  
     137  --bnb.beziehungsart AS bnbbez,  
     138  --bbg.beziehungsart AS bbgbez,  
     139  --bsf.beziehungsart AS bsfbez,  
     140  --k.gemarkungsnummer, 
     141    g.land, g.regierungsbezirk, g.kreis, g.gemeinde 
     142 
     143  FROM ax_person               p 
     144 
     145-- Person < benennt < Namensnummer 
     146  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer 
     147  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id 
     148 
     149-- Namensnummer > istBestandteilVon > Blatt 
     150  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt 
     151  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id 
     152 
     153-- Blatt < istBestandteilVon < buchungsStelle1 
     154  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle 
     155  JOIN ax_buchungsstelle       s1  ON bbg.beziehung_von  = s1.gml_id  
     156 
     157-- buchungsStelle2 < an < buchungsStelle1 
     158  JOIN alkis_beziehungen      bss  ON bss.beziehung_von  = s1.gml_id  -- Bez. Stelle  - Stelle 
     159  JOIN ax_buchungsstelle       s2  ON bss.beziehung_zu   = s2.gml_id  
     160 
     161-- buchungsStelle2 < istGebucht < flurstÃŒck 
     162  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s2.gml_id  -- Bez. Stelle - FlurstÃŒck 
     163  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id  
     164 
     165  JOIN ax_gemarkung            k   ON f.land             = k.land  
     166                                  AND f.gemarkungsnummer = k.gemarkungsnummer  
     167  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung 
     168 
     169  WHERE bpn.beziehungsart = 'benennt'  
     170    AND bnb.beziehungsart = 'istBestandteilVon' 
     171    AND bbg.beziehungsart = 'istBestandteilVon' 
     172    AND bss.beziehungsart = 'an' 
     173    AND bsf.beziehungsart = 'istGebucht' 
     174 -- LIMIT 100  -- Test-Option 
     175; 
     176 
     177COMMENT 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.'; 
     178 
     179 
     180-- Statistik ÃŒber die Buchungs-Typen je Gemeinde 
     181CREATE VIEW gemeinde_person_statistik 
     182AS 
     183  SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen 
     184  FROM   gemeinde_person    p 
     185  JOIN   gemeinde_gemarkung g 
     186    ON   p.land     = g.land  
     187    AND  p.regierungsbezirk = g.regierungsbezirk  
     188    AND  p.kreis    = g.kreis  
     189    AND  p.gemeinde = g.gemeinde 
     190  GROUP BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp 
     191  ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp 
     192; 
     193 
     194COMMENT ON VIEW gemeinde_person_statistik IS 'ZÀhlen der Personen je Gemeinde und Buchungstyp'; 
     195 
     196 
     197-- ENDE -- 
  • trunk/data/konvert/postnas_0.6/gemeinden_laden.sql

    r105 r140  
    1414 
    1515 
    16 -- Teil 2: Laden der Tabelle 
     16-- Teil 2: Laden der Tabellen 
    1717 
    1818-- Stand  
    1919 
    2020--  2011-07-25 PostNAS 06, Umbenennung 
     21--  2011-12-08 Person -> Gemeinde 
     22 
    2123 
    2224SET client_encoding = 'UTF-8'; 
     
    5860 
    5961 
     62 
     63-- ======================================================= 
     64-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden 
     65-- ======================================================= 
     66 
     67 
     68-- erst mal sauber machen 
     69DELETE FROM gemeinde_person; 
     70 
     71-- alle direkten Buchungen mit View ermitteln und in Tabelle speichern 
     72-- Für eine Stadt: ca. 20 Sekunden 
     73INSERT INTO  gemeinde_person  
     74       (land, regierungsbezirk, kreis, gemeinde, person, buchtyp) 
     75 SELECT land, regierungsbezirk, kreis, gemeinde, person, 1 
     76   FROM gemeinde_person_typ1; 
     77 
     78 
     79-- noch die komplexeren Buchungen ergänzen (Recht an ..) 
     80-- Mit View ermitteln und in Tabelle speichern 
     81-- Für eine Stadt: ca. 10 Sekunden 
     82INSERT INTO  gemeinde_person  
     83       (  land,   regierungsbezirk,   kreis,   gemeinde,   person,  buchtyp) 
     84 SELECT q.land, q.regierungsbezirk, q.kreis, q.gemeinde, q.person,  2 
     85   FROM gemeinde_person_typ2 q   -- Quelle 
     86   LEFT JOIN gemeinde_person z   -- Ziel 
     87     ON q.person   = z.person    -- Aber nur, wenn dieser Fall im Ziel 
     88    AND q.land     = z.land  
     89    AND q.regierungsbezirk = z.regierungsbezirk  
     90    AND q.kreis    = z.kreis  
     91    AND q.gemeinde = z.gemeinde 
     92  WHERE z.gemeinde is Null;      -- ..  noch nicht vorhanden ist 
     93 
     94 
    6095-- ENDE -- 
  • trunk/data/konvert/postnas_0.6/sichten.sql

    r120 r140  
    66 
    77--  2011-07-25 PostNAS 06, Umbenennung 
     8--  2011-10-20 Nummer NebengebÀude und Zuordnungspfeile fuer GebÀude   ##### IN ARBEIT 
     9--  2011-12-08 umbenannt "gemeinde_in_gemarkung" -> "gemarkung_in_gemeinde" 
    810 
    911--  ----------------------------------------- 
     
    2729-- Die FlurstÃŒcksnummer fehlt dann im WMS. 
    2830-- Die Bedingung vorÃŒbergehend heraus nehmen. Ursache klÀren! 
    29  
    30 -- 4.11.2011 Sichten fÃŒr die Grenzen aus der Tabelle ax_besondereflurstuecksgrenze Astrid Emde 
    3131 
    3232 
     
    7878 
    7979 
     80-- Layer "ag_t_nebengeb" 
     81-- --------------------- 
     82 
     83CREATE OR REPLACE VIEW s_nummer_nebengebaeude  
     84AS  
     85 SELECT ap_pto.ogc_fid,  
     86        ap_pto.wkb_geometry,  
     87        ap_pto.drehwinkel * 57.296 AS drehwinkel,        -- umn: ANGLE [drehwinkel] 
     88     -- alkis_beziehungen.beziehungsart,                 -- TEST 
     89     -- ax_lagebezeichnungmitpseudonummer.pseudonummer,  -- die HsNr des zugehoerigen Hauptgebaeudes 
     90        ax_lagebezeichnungmitpseudonummer.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes 
     91   FROM ap_pto 
     92   JOIN alkis_beziehungen  
     93     ON ap_pto.gml_id = alkis_beziehungen.beziehung_von 
     94   JOIN ax_lagebezeichnungmitpseudonummer  
     95     ON alkis_beziehungen.beziehung_zu  = ax_lagebezeichnungmitpseudonummer.gml_id 
     96  WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon' 
     97; 
     98 
     99COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÀude'; 
     100 
     101-- ToDo: Die Zahl in Klammern setzen ?  (in Map oder View?) 
     102 
    80103 
    81104-- Layer "ag_p_flurstueck" 
     
    140163 
    141164COMMENT ON VIEW s_beschriftung IS 'ap_pto, die noch nicht in anderen Layern angezeigt werden'; 
     165 
     166 
     167BAUSTELLE 
     168 
     169 
     170-- Layer "s_zuordungspfeil_gebaeude" 
     171-- ----------------------------------- 
     172 
     173CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude  
     174AS  
     175 SELECT ap_lpo.ogc_fid,  
     176     -- alkis_beziehungen.beziehungsart, -- TEST 
     177     -- ap_lpo.art, -- TEST 
     178        ap_lpo.wkb_geometry 
     179   FROM ap_lpo 
     180   JOIN alkis_beziehungen  
     181     ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von 
     182   JOIN ax_gebaeude  
     183     ON alkis_beziehungen.beziehung_zu = ax_gebaeude.gml_id 
     184  WHERE ap_lpo.art = 'Pfeil' 
     185    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'; 
     186 
     187COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung'; 
     188 
     189 
     190-- Sichten vom OBK (Oberbergischer Kreis) zu "Grenzen" 
     191-- --------------------------------------------------- 
     192-- Schema "alkis" daraus entfernt. 
     193 
     194-- Feld "ax_besondereflurstuecksgrenze.artderflurstuecksgrenze" als Array "integer[]" ! 
     195-- Anpassung Schema 18.09.2011 
     196 
     197CREATE OR REPLACE VIEW sk2022_gemeindegrenze  
     198AS  
     199 SELECT gemg.ogc_fid, gemg.wkb_geometry 
     200   FROM ax_besondereflurstuecksgrenze gemg 
     201  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze))  
     202    AND gemg.advstandardmodell ~~ 'DLKM'::text; 
     203 
     204 
     205CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze  
     206AS  
     207 SELECT rbg.ogc_fid, rbg.wkb_geometry 
     208   FROM ax_besondereflurstuecksgrenze rbg 
     209  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze))  
     210    AND rbg.advstandardmodell ~~ 'DLKM'::text; 
     211 
     212 
     213CREATE OR REPLACE VIEW sk2018_bundeslandgrenze  
     214AS  
     215 SELECT blg.ogc_fid, blg.wkb_geometry 
     216   FROM ax_besondereflurstuecksgrenze blg 
     217  WHERE (7102 = ANY (blg.artderflurstuecksgrenze))  
     218    AND blg.advstandardmodell ~~ 'DLKM'::text; 
     219 
     220 
     221CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze  
     222AS  
     223 SELECT gemag.ogc_fid, gemag.wkb_geometry 
     224   FROM ax_besondereflurstuecksgrenze gemag 
     225  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze))  
     226    AND gemag.advstandardmodell ~~ 'DLKM'::text; 
     227 
     228 
     229--CREATE OR REPLACE VIEW sk2012_flurgrenze  
     230--AS  
     231-- SELECT fg.ogc_fid, fg.wkb_geometry 
     232--   FROM ax_besondereflurstuecksgrenze fg 
     233--  WHERE (3000 = ANY (fg.artderflurstuecksgrenze))  
     234--    AND fg.advstandardmodell ~~ 'DLKM'::text; 
     235 
     236-- Vorlaeufig, bis Schema umgestellt ist 
     237 
     238CREATE OR REPLACE VIEW sk2012_flurgrenze  
     239AS  
     240 SELECT fg.ogc_fid, fg.wkb_geometry 
     241   FROM ax_besondereflurstuecksgrenze fg 
     242  WHERE (3000 = fg.artderflurstuecksgrenze)  
     243    AND fg.advstandardmodell ~~ 'DLKM'::text; 
     244 
     245-- comment .... 
     246 
    142247 
    143248--  ------------------------------------------ 
     
    240345-- Nur durch Auswertung der FlurstÃŒcke kann man ermitteln, in welcher Gemeinde eine Gemarkung liegt. 
    241346 
    242 CREATE OR REPLACE VIEW gemeinde_in_gemarkung 
     347-- 2011-12-08 umbenannt 
     348 
     349CREATE OR REPLACE VIEW gemarkung_in_gemeinde 
    243350AS 
    244351  SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer 
     
    247354; 
    248355 
    249 COMMENT ON VIEW gemeinde_in_gemarkung IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; 
     356COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; 
    250357 
    251358 
     
    481588; 
    482589 
    483 -- 
    484 -- Sichten fÃŒr Grenzen aus ax_besondereflurstuecksgrenze 
    485 -- 
    486 -- Select distinct artderflurstuecksgrenze from ax_besondereflurstuecksgrenze 
    487 Create view grenze_flur_3000 as  
    488 Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze 
    489 where 3000 = ANY(artderflurstuecksgrenze); 
    490  
    491 Create view grenze_gemarkung_7003 as  
    492 Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze 
    493 where 7003 = ANY(artderflurstuecksgrenze); 
    494  
    495  
    496 Create view grenze_regierungsbezirk_7103 as  
    497 Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze 
    498 where 7103 = ANY(artderflurstuecksgrenze); 
    499  
    500 Create view grenze_landkreisgrenze_7104 as  
    501 Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze 
    502 where 7104 = ANY(artderflurstuecksgrenze); 
    503  
    504  
    505 Create view grenze_gemeinde_7106 as  
    506 Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze 
    507 where 7106 = ANY(artderflurstuecksgrenze); 
    508  
    509590-- END -- 
    510591 
Note: See TracChangeset for help on using the changeset viewer.