Darstellung von Gebäuden durch mehrere Klassen
--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 o.objnr AS oid, o.objart, o.folie, o.the_geom, h.gemeinde, h.strasse, h.hausnr, h.lfdnr, sk.beschreibung FROM alk_oska sk, alkobj_e_fla o LEFT JOIN alknhaus h ON o.objnr = h.objnr WHERE (o.folie = '011' OR o.folie = '084') AND o.objart = sk.objart;
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.
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 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.
Und so läufts, hier mal am Beispiel der Wohngebäude:
1. Klasse MIT Namen "Wohngebäude" Expression: ([folie] = 011 AND [lfdnr] = 001 AND [OBJART] = 1003 OR [OBJART] >= 1211 AND [OBJART] <= 1399 OR [OBJART] >= 2101 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.
d.h. holt alle NEBENgebäude von Wohngebäuden MIT Schlüssel
3. Klasse OHNE Namen Expression: ([folie] = 011 AND '[lfdnr]' = '' AND [OBJART] = 1003 usw.
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 ([folie] = 011 AND [lfdnr] = 001 AND [OBJART] = 1004 OR [OBJART] >= 1701 AND [OBJART] <= 1799 OR [OBJART] = 2161)
- öffentliche Gebäude ([folie] = 011 AND [lfdnr] = 001 AND [OBJART] >= 1101 AND [OBJART] <= 1199 OR [OBJART] = 2141)
- Handelsgebäude ([folie] = 011 AND [lfdnr] = 001 AND [OBJART] >= 1401 AND [OBJART] <= 1499 OR [OBJART] = 2151)
- sonstige Gebäude ([folie] = 011 AND [lfdnr] = 001 AND [OBJART] >= 2301 AND [OBJART] <= 2921 OR [OBJART] = 1911 OR [OBJART] = 1913)