Changeset 351 for trunk/import


Ignore:
Timestamp:
01/08/15 17:13:59 (9 years ago)
Author:
frank.jaeger
Message:

Verbesserte Darstellung von Flur, Gemarkung und Gemeinde im WMS.

Location:
trunk/import
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/pp_definition.sql

    r344 r351  
    2222--             Wie im Schema: SchlÃŒssel von integer nach varchar fÃŒr land, regierungsbezirk usw. 
    2323--  2014-10-28 letzte FÀlle von "substring(gml_id,1,16)" wieder raus 
    24  
     24--  2014-12-17 Spalte gemeinde in Tabelle pp_flur, dient der Filterung im WMS-Layer "Gebiete" 
     25 
     26/* Patch 2014-12-17: 
     27 ALTER TABLE pp_flur ADD COLUMN gemeinde character varying; 
     28 COMMENT ON COLUMN pp_flur.gemeinde IS 'Gemeindenummer'; 
     29*/ 
    2530 
    2631-- ============================ 
     
    143148    regierungsbezirk   character varying, 
    144149    kreis              character varying, 
     150    gemeinde           character varying NOT NULL, 
    145151    gemarkung          character varying NOT NULL, 
    146152    flurnummer         integer NOT NULL, 
     
    162168 
    163169COMMENT ON TABLE  pp_flur                IS 'Post-Processing: Flur'; 
     170COMMENT ON COLUMN pp_flur.gemeinde       IS 'Gemeindenummer'; 
    164171COMMENT ON COLUMN pp_flur.gemarkung      IS 'Gemarkungsnummer'; 
    165172COMMENT ON COLUMN pp_flur.the_geom       IS 'Geometrie aus Summe aller FlurstÃŒcke'; 
  • trunk/import/pp_laden.sql

    r339 r351  
    2323--  2014-09-19 Substring auf gml_id, Korrektur "endet IS NULL" 
    2424--  2014-09-30 RÃŒckbau substring(gml_id) 
     25--  2014-12-17 Neue Spalte "gemeinde" in Tabelle "pp_flur", dient der Filterung im WMS-Layer "Gebiete" 
     26--  2015-01-08 Mehrfach-Versuche der Geometrie-Zusammenfassung mit wachsender Puffergröße. 
    2527 
    2628 
     
    3234-- Die dynamische Aufbereitung ÃŒber Views und Functions wÃŒrde zu lange dauern und somit lange  
    3335-- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen. 
     36 
     37-- Geometrie glÀtten und vereinfachen fÃŒr Flur, Gemarkung und Gemeinde: 
     38-- Die "simplen" Geometrien sollen nur fÃŒr die Darstellung einer Übersicht verwendet werden. 
     39-- Ablage der simplen Geometrie in einem alternativen Geometriefeld im gleichen Datensatz. 
    3440 
    3541-- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktualisierung)  
     
    232238-- Geometrien der FlurstÃŒcke schrittweise zu groesseren Einheiten zusammen fassen 
    233239-- ============================================================================== 
    234  
    235 -- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthÀlt. 
    236 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen,  
    237 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch! 
     240-- http://postgis.net/docs/manual-1.5/ST_Union.html (Aggregate version) 
     241-- http://postgis.net/docs/manual-1.5/ST_Collect.html 
     242 
     243-- Wenn ein Gebiet durch geometrische Filter im NBA-Verfahren ausgegeben wurde, dann gibt es  
     244-- Randstreifen, die zu Pseudo-Fluren zusammen gefasst werden.  
     245-- Diese werden fÃŒr den WMS durch einen View ausgefiltert, der nur eine Gemeinde darstellt. 
    238246 
    239247-- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek 
    240248 
    241249TRUNCATE pp_flur; 
    242 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemarkung, flurnummer, anz_fs, the_geom ) 
    243    SELECT  f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer as gemarkung, f.flurnummer,  
     250 
     251INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemeinde, gemarkung, flurnummer, anz_fs, the_geom ) 
     252   SELECT  f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer as gemarkung, f.flurnummer,  
    244253           count(gml_id) as anz_fs, 
    245            st_multi(st_union(st_buffer(f.wkb_geometry,0.06))) AS the_geom -- Zugabe um ZwischenrÀume zu vermeiden 
     254           ST_Multi(st_union(st_buffer(f.wkb_geometry,0.06))) AS the_geom -- Zugabe um ZwischenrÀume zu vermeiden 
    246255     FROM  ax_flurstueck f 
    247256     WHERE f.endet IS NULL AND NOT f.wkb_geometry IS NULL 
    248   GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer, f.flurnummer; 
     257  GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer, f.flurnummer; 
     258 
     259-- Vereinfachte Geometrie der Flur fÃŒr die Darstelung im WMS in einem kleinen Maßstab 
     260UPDATE pp_flur      SET simple_geom = st_simplify(the_geom, 0.5); 
    249261 
    250262 
     
    255267UPDATE pp_gemarkung a 
    256268  SET the_geom =  
    257    ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.12))) AS the_geom -- Puffer/Zugabe um Löcher zu vermeiden 
     269   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.15))) AS the_geom -- Puffer/Zugabe um Löcher zu vermeiden 
    258270       FROM pp_flur b 
    259271      WHERE a.land      = b.land  
    260272        AND a.gemarkung = b.gemarkung 
    261273   ); 
    262  
    263 -- Fluren zaehlen 
     274-- Hierbei können Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt. 
     275-- Die Ursache ist unklar. 
     276--  TopologyException: found non-noded intersection between LINESTRING 
     277 
     278-- Praktische Lösung: 
     279-- Bei den Gemarkungen, die nichts abbekommen haben, mit schrittweise groesserem Buffer noch mal versuchen. 
     280UPDATE pp_gemarkung a 
     281  SET the_geom =  
     282   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.20))) AS the_geom -- Puffer vergroessert 
     283       FROM pp_flur b 
     284      WHERE a.land      = b.land  
     285        AND a.gemarkung = b.gemarkung 
     286   ) WHERE the_geom IS NULL; 
     287 
     288UPDATE pp_gemarkung a 
     289  SET the_geom =  
     290   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.30))) AS the_geom -- Puffer vergroessert 
     291       FROM pp_flur b 
     292      WHERE a.land      = b.land  
     293        AND a.gemarkung = b.gemarkung 
     294   ) WHERE the_geom IS NULL; 
     295 
     296/* Guggst du (auf leeren Geometry-Typ achten: 
     297 
     298   SELECT gemarkungsname, geometrytype(the_geom) AS typ,  
     299     st_isvalid(the_geom) AS vali, st_asewkt(the_geom) AS ewkt 
     300   FROM pp_gemarkung; 
     301 
     302*/ 
     303 
     304-- Die Fluren in der Gemarkung zaehlen 
    264305UPDATE pp_gemarkung a 
    265306  SET anz_flur =  
     
    271312 
    272313 
     314-- Vereinfachte Geometrie der Gemarkung fÃŒr die Darstellung im WMS in einem kleinen Maßstab 
     315-- Gemarkung (Wirkung siehe pp_gemarkung_analyse) 
     316UPDATE pp_gemarkung SET simple_geom = st_simplify(the_geom, 2.2);  
     317 
     318 
    273319-- Gemarkungen zu Gemeinden zusammen fassen 
    274320-- ---------------------------------------- 
    275321 
    276 -- FlÀchen vereinigen (aus der bereits vereinfachten Geometrie) 
    277 UPDATE pp_gemeinde a 
    278   SET the_geom =  
    279    ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.1))) AS the_geom -- noch mal Zugabe 
     322-- FlÀchen vereinigen 
     323UPDATE pp_gemeinde a 
     324  SET the_geom =  
     325   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.2))) AS the_geom -- noch mal Zugabe 
    280326     FROM    pp_gemarkung b 
    281327     WHERE a.land     = b.land  
    282328       AND a.gemeinde = b.gemeinde 
    283329   ); 
    284  
    285 -- Gemarkungen zÀhlen 
     330-- Hierbei können Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt. 
     331-- Die Ursache ist unklar. 
     332 
     333-- Praktische Lösung: 
     334-- weitere Versuche mit mehr Puffer, wenn Exception auftrat 
     335UPDATE pp_gemeinde a 
     336  SET the_geom =  
     337   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.3))) AS the_geom -- MEHR Zugabe 
     338     FROM    pp_gemarkung b 
     339     WHERE a.land     = b.land  
     340       AND a.gemeinde = b.gemeinde 
     341   ) WHERE the_geom IS NULL; 
     342 
     343UPDATE pp_gemeinde a 
     344  SET the_geom =  
     345   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.4))) AS the_geom -- noch MEHR Zugabe 
     346     FROM    pp_gemarkung b 
     347     WHERE a.land     = b.land  
     348       AND a.gemeinde = b.gemeinde 
     349   ) WHERE the_geom IS NULL; 
     350 
     351 
     352-- Vereinfachte Geometrie der Gemeinde fÃŒr die Darstellung im WMS in einem kleinen Maßstab 
     353-- Gemeinde (Wirkung siehe pp_gemeinde_analyse) 
     354UPDATE pp_gemeinde  SET simple_geom = st_simplify(the_geom, 5.0);  
     355 
     356-- Gemarkungen in der Gemeinde zÀhlen 
    286357UPDATE pp_gemeinde a 
    287358  SET anz_gemarkg =  
     
    291362       AND a.gemeinde = b.gemeinde 
    292363   ); 
    293  
    294  
    295 -- Geometrie glÀtten und vereinfachen. 
    296 -- Diese "simplen" Geometrien sollen nur fÃŒr die Darstellung einer Übersicht verwendet werden. 
    297 -- Ablage der simplen Geometrie in einem alternativen Geometriefeld im gleichen Datensatz. 
    298  
    299 UPDATE pp_flur      SET simple_geom = st_simplify(the_geom, 0.5); -- Flur  
    300  
    301 UPDATE pp_gemarkung SET simple_geom = st_simplify(the_geom, 2.2); -- Gemarkung (Wirkung siehe pp_gemarkung_analyse) 
    302  
    303 UPDATE pp_gemeinde  SET simple_geom = st_simplify(the_geom, 5.0); -- Gemeinde (Wirkung siehe pp_gemeinde_analyse) 
    304364 
    305365 
  • trunk/import/staedtische_FS_aus_ALKIS_rlp.sql

    r349 r351  
    1313--  2014-09-30 RÃŒckbau subsrting(gml_id), Umbenennung SchlÃŒsseltabellen "ax_*" nach "v_*" 
    1414--  2014-12-16 Views fÃŒr Gebiete im WMS, gefiltert nach individueller Gemeinde 
     15--  2014-12-17 Spalte "gemeinde" in "pp_flur" nutzen 
    1516 
    1617-- Voraussetzung = View "doppelverbindung" aus ALKIS PostNAS-Projekt Datei "sichten.sql" 
     18 
     19-- ToDo: Umbenennen der Datei von "staedtische_FS" nach "staedtische_views" oder so Àhnlich. 
    1720 
    1821 
     
    97100 
    98101-- Flur gefiltert 
    99 --  +++ Im PostProcessing auch Gemeinde in Tabelle "pp_flur" einfÃŒgen und fÃŒllen. 
    100102CREATE OR REPLACE VIEW gebiet_flur 
    101103AS 
    102   SELECT f.gid, f.gemarkung, f.flurnummer, f.the_geom  
    103     FROM pp_flur f 
    104     JOIN pp_gemarkung g ON f.gemarkung = g.gemarkung -- JOIN = Work-Arround weil gemeinde in "pp_flur" fehlt 
    105     WHERE g.gemeinde = '103'; -- Osann-Monzel 
     104  SELECT gid, gemarkung, flurnummer, the_geom  
     105    FROM pp_flur  
     106   WHERE gemeinde = '103'; -- Osann-Monzel 
    106107COMMENT ON VIEW gebiet_flur  IS 'FlurflÀchen (vereinfachte Geometrie), gefiltert nach Gemeinde.'; 
    107108GRANT SELECT ON TABLE gebiet_flur TO ms6; 
Note: See TracChangeset for help on using the changeset viewer.