Gibt es eine Möglichkeit, ein Attribut aus einer Polygonebene auszuwählen und den Wert mit "inside" im Feldrechner in ein virtuelles Feld einer Punktebene einzufügen?
CASE
WHEN within($geometry, geometry_polygon) THEN attribute_polygon
END
qgis
field-calculator
layers
within
Mondmeer
quelle
quelle
Antworten:
Nach der Installation des refFunctions-Plugins sind räumliche Verknüpfungen im Feldrechner verfügbar.
quelle
Der Feldrechner unterstützt standardmäßig keine räumlichen Verknüpfungen zwischen Feature-Layern. Wenn Sie sich jedoch den Beitrag von NathanW im Funktionseditor für QGIS-Ausdrücke ansehen, können Sie feststellen, dass wir unsere eigene Dateninteraktion skripten können.
Mit dem folgenden Skript können Sie ausdrücken, wonach Sie suchen. Es funktioniert, indem alle Features auf der Polygonebene durchlaufen werden. Wenn eine räumliche Verknüpfung vorhanden ist, verweisen Sie auf Tabellendaten aus der angegebenen Spalte:
Beispiel für eine Polygonebene
Unten sehen Sie ein Beispiel für einen Polygon-Layer, den Sie möglicherweise haben. Ich habe auch eine entsprechende Punktebene erstellt, die Sie im endgültigen Bild sehen werden.
Ausdrucksverwendung
Hinweis: Wenn Sie eine separate Spalte verwenden möchten, müssen Sie das zweite Argument so ändern, dass es mit dem Spaltennamen im Polygon-Dataset übereinstimmt. Beispiel: Sie könnten die Spalte 'AreaNumber' verwenden, müssten jedoch dem Spaltentyp in den Einstellungen des Feldrechners entsprechen.
Ergebnis
Sie können sehen, dass der Standardspaltenwert angewendet wurde, wenn keine räumliche Verknüpfung vorhanden ist und die anderen mit den korrekten Daten übereinstimmen. Beachten Sie, dass das Skript, das ich gegeben habe, nur beim ersten Spiel beitritt. Sie müssten eine andere Geschäftslogik erstellen, wenn sich Ihre Polygone überschneiden.
quelle
Dies kann im Feldrechner mit Funktion durchgeführt werden
aggregate()
. Erstellen Sie in der Punktebene ein neues Feld mit dem folgenden Ausdruck für den Feldrechner:Wo
layer
ist Polygon-Layer-Name wie Zeichenfolge geschrieben,aggreagate
ist Aggregatfunktion (kann auch Summe usw. verwendet werden),expression
wird Feld aus Werten genommen,concatenator
wird Zeichenfolge zusammengefügt (muss auch in diesem Fall gesetzt werden) undfilter
basiert auf Filterfunktionen on expression (schneidet in diesem Fall die Ebenengeometrie mit der Geometrie der übergeordneten Ebene).Weitere Informationen finden Sie in der Dokumentation zu Aggregates QGIS .
Für automatische Aktualisierungen können virtuelle Felder verwendet werden oder Sie können den Ausdruck als Standardwert in den Formulareinstellungen für Attribute in den Layereigenschaften festlegen ( Dokumentation zu den Formulareinstellungen für Attribute ).
quelle
geometry(@parent)
) erst ab QGIS 3 unterstützt werden. Nur für den Fall, dass jemand, der dies liest, immer noch 2.18 verwendet ...