Różnica między geometrią a $ geometrią QGIS

12

To może być banalne pytanie, ale nie wiem, jaka jest różnica między geometrią a geometrią $ w QGIS? Nie znalazłem żadnych przykładów użycia tej funkcji.

geometria i geometria $

Szczególnie interesuje mnie geometria, w jakich przypadkach jest pomocna?

Jane
źródło

Odpowiedzi:

19

Tuż obok listy funkcji, na których znajduje się zrzut ekranu, powinna znajdować się dokumentacja aktualnie wybranej funkcji. Dla mnie w wersji 2.18.12 czytają:

$ geometria Zwraca geometrię bieżącego elementu. Może być używany do przetwarzania z innymi funkcjami.

geometria Zwraca geometrię elementu.

To jest coś innego niż metoda w programowaniu obiektowym. $ geometria to geometria tego / własnego . Możesz myśleć o tym bardziej jak o atrybucie lub właściwości.

z drugiej strony geometria wymaga / pozwala przekazać do niej element, a on zwróci odpowiednią geometrię. Jak pokazuje dokumentacja, możesz tego użyć, aby uzyskać geometrię z wyboru funkcji opartego na atrybutach:

geometry(
  get_feature(layer, attributeField, value)
)

To, co jeszcze możesz z tym zrobić, jest ograniczone jedynie twoją kreatywnością i źródłami funkcji, które można do niej przekazać. :)

bugmenot123
źródło
Jak więc mogę go użyć, gdy próbuję przekształcić oddzielne punkty, które tworzą linię ((make_line (make_point („xlbl” -1000, „ylbl”), make_point ((„xlbl” + długość ((„czas”)) * 3000 +7000), „ylbl”),) ... itd. Mam na myśli to, że chcę przekształcić każdy punkt linii w oparciu o współrzędne w wartościach tabeli atrybutów
Jane
Przypuszczam, że muszę przedstawić każdy punkt mojej linii (od make_point func) jako geometrię, a następnie przekształcić go, o ile cała zbudowana geometria make_line przekształci źle gis.stackexchange.com/questions/253002/…
Jane
Jasne. Brzmi to jak użycie niewłaściwego narzędzia, czy wypróbowałeś wtyczkę point2one lub jakieś inne przetwarzanie?
bugmenot123
1
Nie, to jest styl warstwy, nie mogę używać żadnych wtyczek we właściwościach warstwy. Próbuję rozwiązać problem dzięki wbudowanym funkcjom qgis
Jane
2
Porównanie właściwości brzmi dobrze, ale porównanie OO jest nieco słabe, $geometryjest raczej zmienną (stałą), niezależnie od tego, czy OO, czy nie.
Matthias Kuhn
15

$geometryzwraca geometrię bieżącego elementu jak wgeom_to_wkt($geometry)

geometryzwraca geometrię określonego elementu jak wgeom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

Drugiego przypadku użyłbyś, gdybyś chciał na przykład przetworzyć bieżącą funkcję w stosunku do konkretnej funkcji:

intersects($geometry,geometry(get_feature(layer,attributeField,value)))

mixedbredie
źródło