[FOSSGIS-Talk] QGIS - kniffliges Beschriftungsproblem
Andreas Neumann
a.neumann at carto.net
Fr Mär 30 08:57:16 CEST 2012
Hallo,
Mit PostgreSQL wäre das kein Problem.
Man macht entweder:
a) einen Join und dann ein GROUP BY oder
b) einen Subquery der alles in einen String zusammenfasst.
Zum aggregieren kann man die aggregate Funktionen array_agg() oder
string_agg() nehmen:
http://www.postgresql.org/docs/current/static/functions-aggregate.html
Ich mache das in Uster z.b. um alle Eigentümer und Adressen einer
Parzelle zu aggregieren. Das funktioniert gut.
Grüsse,
Andreas
On Fri, 30 Mar 2012 08:22:05 +0200, wrote:
> Hallo Lars,
>
> ich arbeite eigentlich ausschliesslich mit PostgreSQL/PostGIS, des
> kann ich Dir zu OO keinen Tip geben, sondern nur sagen, wie das in
> PostgreSQL gehen würde. Ich schliesse mich Lars Lingner an: Besteht
> die Möglichkeit eine DB zu nutzen?
> Das mit dem Laden als Vektorlayer wusste ich nicht (weil kein
> dateibasiertes Arbeiten :)
> QGIS 1.7 kann nur _ein_ Feld zur Beschriftung heranziehen, die
> dev-Version erlaubt komplexe Ausdrücke zur Beschriftung (also auch
> mehrere Felder).
> Ich denke das von Dir beschriebene Verhalten der 1:n Beziehung
> (Auswahlverhalten) ist nicht besonders schwer zu realisieren, von da
> ist es aber ein weiter Weg zur Beschriftung, denn die Beschriftung
> kann nur auf Felder der Tabelle des Layers erfolgen, nicht auf Felder
> in anderen Tabellen. Durch die 1:1 - Verknüpfung werden Felder einer
> anderen Tabelle quasi zum Bestandteil der entsprechenden Layer, darum
> geht das hier.
>
> Am 29.03.2012 22:01, schrieb dezentech at web.de:
>> Hallo Bernhard,
>>
>> danke für die Tips.
>>
>> Das Wort "Pivottabelle" habe ich das letzte Mal vor ca. 15 Jahren
>> gehört... Mit Excel kann man damit Auswertungen aufgrund
>> verschiedener
>> Parameter machen. Jedoch ist es mir nicht gelungen, auf Basis der
>> eindeutigen Hausnummer, die Namen transponiert in die gleiche Zeile
>> hintereinander zu schreiben... Wie läuft denn sowas mit OpenOffice?
>>
>> Ich habe zwischenzeitlich entdeckt, daß man in QGIS geometrielose
>> Tabellen (csv) einladen kann: Add Vector Layer - Dateityp "csv". Für
>> ein
>> Join würde das also gehen (wenn ich denn diese Pivot-Sache
>> hinkriegen
>> würde...).
>>
>> Jedoch, glaube ich, daß man keine VERKNÜPFUNG (1:1) sondern eine
>> BEZIEHUNG (1:n) zwischen beiden Tabellen herstellen muß. Ich kenne
>> sowas
>> noch aus alten ESRI ArcInfo Zeiten. Wahrscheinlich müßte in QGIS
>> dafür
>> ein Plugin geschrieben werden, sofern es nicht schon eins gibt, das
>> ich
>> nicht finde...
>>
>> BEZIEHUNG heißt, daß die Attributtabelle meines Häuser-Shape-Layers
>> so
>> bleibt, wie sie ist. Die geometrielose Tabelle wird in das Projekt
>> hinzugeladen. Wenn man nun eine Beziehung aufgrund einer eindeutigen
>> Spalte (hier: Hausnummer) zwischen beiden herstellt, dann kann man
>> z.B.
>> die Haus-Nr. 1 des Shape-Files markieren und in der Namen-Tabelle
>> werden
>> alle Zeilen mit der gleichen Hausnummer ebenfalls markiert. Und
>> umgekehrt kann man einen Namen in der Tabelle markieren und QGIS
>> markiert das entsprechende Shape-Objekt.
>>
>> Wenn man es schafft, solche Beziehungen in QGIS herzustellen, dann
>> dürfte es (meiner laienhaften Meinung nach) nicht mehr so schwer
>> sein,
>> die Beschriftung der Shape-Objekte anhand einer auszuwählenden
>> Spalte
>> (z.B. Name oder Vorname) der geometrielosen Tabelle ausführen zu
>> lassen,
>> so daß alle zur Hausnummer 1 in Spalte "Name" gehörenden Namen
>> ausgegeben werden.
>>
>> Was sagen die Experten dazu?
>>
>> Grüße sendet Lars
>>
>>
>> bernhard.stroebl at jena.de schrieb:
>>> Hallo,
>>>
>>> QGIS kann keine 1:n Joins (wie sollte das auch gehen? dann müssten
>>> ja
>>> die Polygone verfielfacht werden). Du mußt Deine Exceltabelle also
>>> so
>>> umstrukturieren, dass Du einen 1:1 Join machen kannst.
>>> Ich würde es ungefähr folgendermassen probieren (nicht getestet):
>>> eine
>>> Pivottabelle machen (ich kenne Excel nicht, vermute aber mal, dass
>>> das
>>> darin geht, d.h. Spalte1 = hnr, spalte2 = Name1, spalte3 = Name2
>>> usw.)
>>> Einladen kannst Du nur csv-Tabellen, Du musst das Ergebnis also als
>>> csv abspeichern. Ich glaube, dass Du auch eine x und eine y-Spalte
>>> anlegen mußt, kannst Du irgendwas reinschreiben, denn QGIS lädt,
>>> soweit ich weiss, keine geometrielosen Tabellen von csv. Dann alles
>>> als Shapedatei abspeichern, ein neues Feld anlegen "Beschriftung"
>>> und
>>> mit dem Feldrechner name1 || ' ' || name2 usw. darin eintragen.
>>>
>>> viel Erfolg
>>>
>>> Bernhard
>>>
>>>
>>>
>>> Am 29.03.2012 09:03, schrieb dezentech at web.de:
>>>> Hallo zusammen,
>>>>
>>>> ich habe in QGIS ein Polygon-Shape mit 10 Grundflächen von
>>>> Mehrfamilienhäusern einer Straße. Jedes Mehrfamilienhaus hat als
>>>> Attributwert eine eindeutige Hausnummer (1 bis 10). Und ich habe
>>>> eine
>>>> geometrielose Tabelle (Excel) mit 50 Namen. Zu jedem Namen gibt es
>>>> die
>>>> Hausnummer (1 bis 10), in der diese Person wohnt. In allen Häusern
>>>> wohnen unterschiedliche Mengen von Namen, mal 3, mal 5, mal 8 usw.
>>>>
>>>> Ziel ist, die Polygone mit genau den Namen zu beschriften, die in
>>>> den
>>>> jeweiligen Hausnummern wohnen. Das bedeutet, daß jedes Haus
>>>> unterschiedliche Anzahlen von Namen beinhaltet.
>>>>
>>>> Wer hat eine Idee, wie ich
>>>> 1. eine geometrielose Tabelle in QGIS einladen kann,
>>>> 2. eine Verknüpfung zwischen dem Shape (mit 10 Objekten) und der
>>>> Namentabelle (mit 50 Objekten) herstellen kann,
>>>> 3. die Shapes entsprechend beschriften kann.
>>>>
>>>> Danke für Eure Hinweise im Voraus!
>>>>
>>>> Grüße sendet Lars
>>>> _______________________________________________
>>>> FOSSGIS-Talk-Liste mailing list
>>>> FOSSGIS-Talk-Liste at fossgis.de
>>>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>>>>
>>>>
>>>> ________ Information from NOD32 ________
>>>> This message was checked by NOD32 Antivirus System for Linux Mail
>>>> Server.
>>>> http://www.nod32.com
>>>
>>>
>>> ________ Information from NOD32 ________
>>> This message was checked by NOD32 Antivirus System for Linux Mail
>>> Server.
>>> http://www.nod32.com
>>>
>>
>>
>> ________ Information from NOD32 ________
>> This message was checked by NOD32 Antivirus System for Linux Mail
>> Server.
>> http://www.nod32.com
>
>
>
> ________ Information from NOD32 ________
> This message was checked by NOD32 Antivirus System for Linux Mail
> Server.
> http://www.nod32.com
> _______________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
--
--
Andreas Neumann
Böschacherstrasse 10A
8624 Grüt (Gossau ZH)
Switzerland