Darstellung von Gebäuden durch mehrere Klassen: Unterschied zwischen den Versionen

Aus kvwmap
Wechseln zu: Navigation, Suche
 
Zeile 5: Zeile 5:
 
Ich stelle den Gebäudelayer über folgende Sicht dar:
 
Ich stelle den Gebäudelayer über folgende Sicht dar:
  
  SELECT o.objnr AS oid, o.objart, o.folie, o.the_geom, h.gemeinde, h.strasse, h.hausnr, h.lfdnr, sk.beschreibung
+
  SELECT DISTINCT o.objnr AS oid, o.objart, o.folie, o.the_geom, g.gemeindename, s.strassenname, h.hausnr, os.beschreibung
   FROM alk_oska sk, alkobj_e_fla o
+
   FROM alkobj_e_fla o
 
   LEFT JOIN alknhaus h ON o.objnr = h.objnr
 
   LEFT JOIN alknhaus h ON o.objnr = h.objnr
   WHERE (o.folie = '011' OR o.folie = '084') AND o.objart = sk.objart;
+
  LEFT JOIN alb_v_gemeinden g ON h.gemeinde = g.gemeinde
 +
  LEFT JOIN alb_v_strassen s ON h.gemeinde = s.gemeinde AND h.strasse = s.strasse
 +
  LEFT JOIN alk_oska os ON o.objart = os.objart
 +
   WHERE (o.folie = '011' OR o.folie = '084')
  
Im Ergebnis erhalte ich ALLE Geäude über diese eine Sicht, wobei alle Gebäude mit Hausnummer eine ''lfdnr'' haben, alle Gebäude ohne Hausnummer haben dort nichts stehen. Über die ''lfdnr'' kann ich also verschiedene Darstellungen realisieren (Gebäude mit/ohne Hausnummer), außerdem kann ich über die ''lfdnr'' die Hausnummer wahlweise darstellen (bei Hauptgebäuden) oder nicht.
+
Die Hausnummer lasse ich nicht über den Layer erzeugen; dafür habe ich einen eigenen Layer "Hausnummer", der per "require" an den Gebäudelyer gekettet ist.
  
Für die Darstellung habe ich die Gebäude in fünf Klassen zerlegt, nämlich die "Basisklassen" aus dem OBAK, also Wohngebäude, öffentl. Gebäude, Wirtschafts-/Industriegebäude etc. Ich erzeuge hiermit also kein ALK-Aussehen!!! Die Unterteilung ist reine Geschmackssache, wobei ich allerdings dem OBAK MV folge, der diese fünf "Basistypen" kennt und auch definiert, welche Schlüssel dort subsummieren.
+
Für die Darstellung habe ich die Gebäude in fünf Klassen zerlegt, die den fünf "Basisklassen" aus dem OBAK, also Wohngebäude, öffentl. Gebäude, Wirtschafts-/Industriegebäude, Handelsgebäude und sonstige Gebäude entsprechen. Ich erzeuge hiermit also kein ALK-Aussehen!!! Die Unterteilung ist reine Geschmackssache, wobei ich allerdings dem OBAK MV insoweit folge, als dieser für diese fünf "Basistypen" definiert, welche Schlüssel dort subsummieren.
  
Für jeden dieser fünf Gebäudetypen habe ich DREI Klassen angelegt, insgesamt also 15 Klassen und außerdem außer der Reihe noch eine Klasse für die Gebäude der Folie 084. Die Klasse, die die Hauptgebäude mit Objektnamen enthält, hat jeweils einen Namen, die anderen Klassen haben keinen Namen.
+
Für jeden dieser fünf Gebäudetypen habe ich eine Klasse angelegt und außerdem noch eine Klasse für die Gebäude der Folie 084.  
  
Und so läufts, hier mal am Beispiel der Wohngebäude:
+
Und so sehen die Einträge in der Expression der jeweiligen Class aus:
  
1. Klasse MIT Namen "Wohngebäude"
+
- Wohngebäude
Expression:
+
  ([folie] = 011
  ([folie] = 011 AND [lfdnr] = 001
+
 
  AND [OBJART] = 1003 OR [OBJART] >= 1211  
 
  AND [OBJART] = 1003 OR [OBJART] >= 1211  
 
  AND [OBJART] <= 1399 OR  [OBJART] >= 2101  
 
  AND [OBJART] <= 1399 OR  [OBJART] >= 2101  
  AND [OBJART] <= 2131 OR [OBJART] = 2199)<br><br>
+
  AND [OBJART] <= 2131 OR [OBJART] = 2199)
d.h. holt alle HAUPTgebäude von Wohngebäuden MIT Schlüssel.
+
  
 
2. Klasse OHNE Namen
 
Expression:
 
([folie] = 011 AND [lfdnr] > 001 AND [OBJART] = 1003 usw.<br><br>
 
d.h. holt alle NEBENgebäude von Wohngebäuden MIT Schlüssel
 
 
 
3. Klasse OHNE Namen
 
Expression:
 
([folie] = 011 AND '[lfdnr]' = <nowiki>''</nowiki> AND [OBJART] = 1003 usw.<br><br>
 
d.h. holt alle Wohngebäude OHNE Schlüssel
 
 
Alle drei Klassen verwenden denselben Style, damit sie alle gleich aussehen, aber nur die 1. Klasse verwendet ein Label, denn diese beinhaltet die darzustellenden Hausnummern.
 
 
Ergebnis: In der Karte werden alle Wohngebäude vollständig und gleich dargestellt, wobei nur bei den Hauptgebäuden eine Hausnummer erscheint. In der Legende dagegen ist die Klasse "Wohngebäude" nur einmal zu sehen.
 
 
Beim Drucken gibt es momentan (kvwmap-Version 1.6.2) leider noch Probleme, denn die Legende will ja alle Klassen zeichnen, wodurch für jede Gebäudeart das Symbol dreimal erschiene.
 
 
 
Der Vollständigkeit halber - so lauten die anderen Expressions für die Hauptgebäude:
 
 
  - Wirtschafts- und Industriegebäude
 
  - Wirtschafts- und Industriegebäude
  ([folie] = 011 AND [lfdnr] = 001
+
  ([folie] = 011  
 
  AND [OBJART] = 1004 OR [OBJART] >= 1701  
 
  AND [OBJART] = 1004 OR [OBJART] >= 1701  
 
  AND [OBJART] <= 1799 OR [OBJART] = 2161)
 
  AND [OBJART] <= 1799 OR [OBJART] = 2161)
  
 
  - öffentliche Gebäude
 
  - öffentliche Gebäude
  ([folie] = 011 AND [lfdnr] = 001
+
  ([folie] = 011  
 
  AND [OBJART] >= 1101  
 
  AND [OBJART] >= 1101  
 
  AND [OBJART] <= 1199 OR [OBJART] = 2141)
 
  AND [OBJART] <= 1199 OR [OBJART] = 2141)
  
 
  - Handelsgebäude
 
  - Handelsgebäude
  ([folie] = 011 AND [lfdnr] = 001
+
  ([folie] = 011  
 
  AND [OBJART] >= 1401  
 
  AND [OBJART] >= 1401  
 
  AND [OBJART] <= 1499 OR [OBJART] = 2151)
 
  AND [OBJART] <= 1499 OR [OBJART] = 2151)
  
 
  - sonstige Gebäude
 
  - sonstige Gebäude
  ([folie] = 011 AND [lfdnr] = 001
+
  ([folie] = 011  
 
  AND [OBJART] >= 2301  
 
  AND [OBJART] >= 2301  
 
  AND [OBJART] <= 2921 OR [OBJART] = 1911 OR [OBJART] = 1913)
 
  AND [OBJART] <= 2921 OR [OBJART] = 1911 OR [OBJART] = 1913)
 +
 +
- nicht katasterm. Gebäude
 +
([folie] = 084)

Version vom 24. Juli 2007, 12:30 Uhr

--Markus Hentschel 11:35, 27. Nov 2006 (CET)

Die Darstellung der Gebäude gemäß ZV-AUT unterscheidet nur zwischen Wohn-/öffentlichen Gebäuden auf der einen und "dem Rest" auf der anderen Seite. Da kann man mehr draus machen, wenn man auf ALK-Konformität verzichtet.

Ich stelle den Gebäudelayer über folgende Sicht dar:

SELECT DISTINCT o.objnr AS oid, o.objart, o.folie, o.the_geom, g.gemeindename, s.strassenname, h.hausnr, os.beschreibung
  FROM alkobj_e_fla o
  LEFT JOIN alknhaus h ON o.objnr = h.objnr
  LEFT JOIN alb_v_gemeinden g ON h.gemeinde = g.gemeinde
  LEFT JOIN alb_v_strassen s ON h.gemeinde = s.gemeinde AND h.strasse = s.strasse
  LEFT JOIN alk_oska os ON o.objart = os.objart
 WHERE (o.folie = '011' OR o.folie = '084')

Die Hausnummer lasse ich nicht über den Layer erzeugen; dafür habe ich einen eigenen Layer "Hausnummer", der per "require" an den Gebäudelyer gekettet ist.

Für die Darstellung habe ich die Gebäude in fünf Klassen zerlegt, die den fünf "Basisklassen" aus dem OBAK, also Wohngebäude, öffentl. Gebäude, Wirtschafts-/Industriegebäude, Handelsgebäude und sonstige Gebäude entsprechen. Ich erzeuge hiermit also kein ALK-Aussehen!!! Die Unterteilung ist reine Geschmackssache, wobei ich allerdings dem OBAK MV insoweit folge, als dieser für diese fünf "Basistypen" definiert, welche Schlüssel dort subsummieren.

Für jeden dieser fünf Gebäudetypen habe ich eine Klasse angelegt und außerdem noch eine Klasse für die Gebäude der Folie 084.

Und so sehen die Einträge in der Expression der jeweiligen Class aus:

- Wohngebäude

([folie] = 011  
AND [OBJART] = 1003 OR [OBJART] >= 1211 
AND [OBJART] <= 1399 OR  [OBJART] >= 2101 
AND [OBJART] <= 2131 OR [OBJART] = 2199)
- Wirtschafts- und Industriegebäude
([folie] = 011 
AND [OBJART] = 1004 OR [OBJART] >= 1701 
AND [OBJART] <= 1799 OR [OBJART] = 2161)
- öffentliche Gebäude
([folie] = 011 
AND [OBJART] >= 1101 
AND [OBJART] <= 1199 OR [OBJART] = 2141)
- Handelsgebäude
([folie] = 011 
AND [OBJART] >= 1401 
AND [OBJART] <= 1499 OR [OBJART] = 2151)
- sonstige Gebäude
([folie] = 011 
AND [OBJART] >= 2301 
AND [OBJART] <= 2921 OR [OBJART] = 1911 OR [OBJART] = 1913)

- nicht katasterm. Gebäude

([folie] = 084)