HowTo-Liste

Aus kvwmap
Wechseln zu: Navigation, Suche

Hinweise und Dokus der Anwender über Daten und Anwendungen (spezeille SQLs, spezielle Snippets, "wie hab ich das gemacht?")


Baulasten aus dem ALB

  • --Markus Hentschel 07:59, 24. Feb 2006 (CET) Die Baulasten werden im ALB nachrichtlich geführt (Vorsicht ist allerdings wegen Redundanzen geboten!). Damit lassen Sie sich in kvwmap anzeigen. Wir haben das so realisiert, dass im Flurstück ein Punktsymbol erscheint. Dazu wurde in der PostGIS-DB eine Sicht angelegt, die folgende Definition hat:
SELECT fl.objnr AS oid, fl.objnr AS id, pointonsurface(fl.the_geom) AS the_geom, ab.flurstkennz, ab.blattnr
FROM alb_f_baulasten ab, alknflst f, alkobj_e_fla fl
WHERE fl.folie::text = '001'::text AND ab.flurstkennz::text = f.flurstkennz::text AND f.objnr::text = fl.objnr::text;
"pointonsurface" erzeugt einen Punktort, der garantiert innerhalb der Fläche liegt. Ungelöstes Problem bisher ist, wenn mehrere Baulasten auf einem Flurstück liegen. Dann erscheint mit diesem Statement nur ein Punktsymbol. Schöner wäre natürlich, wenn es dann entsprechend mehrere, verstzte Symbole sind oder wenn im Symbol selber die Anzahl der Baulasten erschiene o.ä.


Flurstücke im Eigentum des Landkreises

  • --Markus Hentschel 08:26, 24. Feb 2006 (CET) Wenn man als Layer die Flurstücke dargestellt haben möchte, die im Eigentum des Landkreises sind, dann ist vorab folgendes zu bedenken (das kann natürlich in anderen Kreisen ganz anders sein):
    • Die Suche nach "Landkreis" alleine reicht nicht aus, denn in NVP haben auch andere Landkreise Eigentum
    • Die Suche nur im ersten Namensfeld reicht nicht aus, manchmal steckt der gesuchte String auch im zweiten Namensfeld
    • Die Schreibweisen sind - historisch durch diverse Kreisgebietsreformen bedingt - sehr uneinheitlich, was zudem noch durch die total veraltete händische ALB-Eingabe mit den entsprechenden Fehlermöglichkeiten unterstützt wird.
SELECT o.objnr::text || b.bezirk::text AS oid, o.objnr::text || b.bezirk::text AS id,
o.the_geom, n.name1::text || n.name2::text AS name, e.bezirk, e.blatt, b.flurstkennz
FROM alb_g_namen n, alb_g_eigentuemer e, alb_g_buchungen b, alknflst f, alkobj_e_fla o
WHERE (
n.name1::text ~~ '%Landkreis Nordvorpommern%'::text OR n.name2::text ~~ '%Landkreis Nordvorpommern%'::text
OR n.name1::text ~~ '%Landkreis Grimmen%'::text
OR n.name1::text ~~ '%Kreis Grimmen%'::text
OR n.name1::text ~~ '%Kreisverwaltung Grimmen%'::text
OR n.name1::text ~~ '%Landkreis Stralsund%'::text
OR n.name1::text ~~ '%Kreis Stralsund%'::text
OR n.name1::text ~~ '%Kreisverwaltung Stralsund%'::text
OR n.name1::text ~~ '%Landkreis Ribnitz%'::text
OR n.name1::text ~~ '%Kreis Ribnitz%'::text
OR n.name1::text ~~ '%Kreisverwaltung Ribnitz%'::text
OR n.name1::text ~~ '%Rat%'::text AND n.name1::text ~~ '%Kreises%'::text
)
AND n.lfd_nr_name = e.lfd_nr_name
AND e.bezirk = b.bezirk AND e.blatt::text = b.blatt::text
AND b.flurstkennz::text = f.flurstkennz::text AND f.objnr::text = o.objnr::text;
So siehts in Nordvorpommern aus und es kann gut sein, dass damit nicht mal alle Schreibweisen abgedeckt sind. Wie gesagt, wird es in anderen Kreisen ähnlich, aber vermutlich doch auch wieder ein bißchen anders sein. Das kann also nicht ohne Anpassung an die eigenen Daten so übernommen werden.


Darstellung der Straßennamen im extra layer

--Boldt 16:48, 13. Mär 2006 (CET)

Wir hatten das Problem der Abfrage in data für den layer Straßennamen, wenn die Namen und die Geometrie aus den Tabellen alkobj_t_pkt und alkobj_t_line herausgenommen werden sollen. Hilfe erhielten wir von Markus und Herrn Korduan, wobei wir hier die Information von Herrn Korduan mal an Allle weitergeben möchten. Herr Korduan hat ein SQL-Statement geschrieben, welches ermöglicht, in einen Layer die Straßennamen aus zwei unterschiedlichen Geometrietabellen (Punkt und Linie) darzustellen.

Prinzipiell kann MapServer in einem Layer nur eine Art von Geometrie anzeigen. Aber Dank PostGIS können wir da was machen. Hier ein Statement, mit dem aus der Punktgeometrie eine Liniengeometrie gemacht wird. Das Statement haben wir in Data zu unserem layer Straßenname geschrieben. Es entstehen Linien der Länge 10m mit der Richtung von winkel.

the_geom FROM (SELECT t.objnr AS oid,t.label AS label,t.winkel AS winkel,t.objart AS objart,t.folie AS alkfolie,MakeLine (t.the_geom,SetSRID(MakePoint(X(t.the_geom)+(cos(t.winkel*PI()/180)*10),Y(t.the_geom)+(sin(t.winkel*PI()/180)*10)),2398))AS  
the_geom FROM alkobj_t_pkt AS t WHERE t.objart >= 5100 and t.objart <= 5299 AND t.folie = '022' UNION SELECT l.objnr AS  
oid,||l.label AS label,'0' AS winkel,l.objart AS objart,l.folie AS alkfolie,l.the_geom AS the_geom FROM alkobj_t_lin AS l 
WHERE l.objart >= 5100 and l.objart <= 5299 AND l.folie = '022') as foo using unique oid using srid=2398

Wobei man das ganze Where auch weglassen kann und in class packen kann. Je nach dem ob man die Beschriftung der Gebäude und Strassen in einem Layer anzeigen will oder verschiedenen. Das Weglassen der Where Klausel kann aber den Bildaufbau wesentlich verzögern, weil die Abfrage länger dauert.

Zum Ausrichten der Texte muss man nun nicht mehr lableangleitem = winkel verwenden, sondern in der Tabelle labels: angle=AUTO und autoangle=1 einstellen. Das bewirkt die Ausrichtung des Textes an der Linie. Der Layer muss dann auch vom Type Line sein also in tabelle Layer Datentype=1. Passen Sie auch den Style des Layers neu an.

Die Class Expression für den layer Straßenname lautet: ('[objart]' >= '5100' AND '[objart]' <= '5299' AND '[alkfolie]' eq '022')

Bei uns funktioniert das jetzt wunderbar.

Viele Grüße aus Parchim