Differenza tra geometria e $ geometria QGIS


12

Questa può essere una domanda banale, ma sono confuso, qual è la differenza tra geometria e $ geometria in QGIS? Non ho trovato alcun esempio di utilizzo di questa funzione.

geometria e $ geometria

In particolare sono interessato alla geometria, in quali casi è utile?

Risposte:


19

Proprio accanto all'elenco delle funzioni del tuo screenshot, dovrebbe esserci la documentazione della funzione attualmente selezionata. Per me, con 2.18.12 quelli leggono:

$ geometry Restituisce la geometria della funzione corrente. Può essere utilizzato per l'elaborazione con altre funzioni.

geometria Restituisce la geometria di una feature.

Questo è come il diverso di un metodo rispetto a una funzione nella programmazione orientata agli oggetti. $ geometry è la geometria di questo / . Puoi pensarlo più come un attributo o una proprietà forse.

la geometria, d'altra parte, richiede / consente di passarvi una funzione e restituirà la geometria corrispondente. Come mostra la documentazione, è possibile utilizzarlo per ottenere la geometria da una selezione di funzioni basata sugli attributi:

geometry(
  get_feature(layer, attributeField, value)
)

Che altro si può fare con esso è solo limitato dalla vostra creatività e le fonti per caratteristiche di passare ad esso. :)


Quindi, come posso usarlo quando provo a trasformare punti separati che formano la linea ((make_line (make_point ("xlbl" -1000, "ylbl"), make_point (("xlbl" + length (("time")) * 3000 +7000), "ylbl"),) ... ecc. Voglio dire che voglio trasformare ogni punto della linea, in base alle coordinate nei valori della tabella degli attributi
Jane

Suppongo di dover rappresentare ogni punto della mia linea (da make_point func) come geometria, quindi trasformarla, nella misura in cui l'intera geometria costruita make_line trasforma erroneamente gis.stackexchange.com/questions/253002/…
Jane

Cosa certa. Sembra come usare lo strumento sbagliato, hai provato il plug-in points2one o qualche altra elaborazione?
bugmenot123

1
No, questo è uno stile del livello, non riesco a usare alcun plugin nelle proprietà del livello. Cerco di risolvere il mio problema grazie alle funzioni integrate di qgis
Jane,

2
Il confronto delle proprietà suona bene, ma il confronto OO è un po 'debole, $geometryè piuttosto una variabile (const), indipendentemente dal fatto che OO o meno.
Matthias Kuhn,

15

$geometryrestituisce la geometria della funzione corrente come ingeom_to_wkt($geometry)

geometryrestituisce la geometria di una funzione specifica come ingeom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

Utilizzeresti il ​​secondo caso se, ad esempio, desideri elaborare la funzione corrente rispetto a una funzione specifica:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.