Différence entre la géométrie et $ geometry QGIS

12

Cela peut être une question triviale, mais je suis confus, quelle est la différence entre la géométrie et $ geometry dans QGIS? Je n'ai trouvé aucun exemple d'utilisation de cette fonction.

géométrie et $ géométrie

Je m'intéresse particulièrement à la géométrie, dans quels cas est-ce utile?

Jeanne
la source

Réponses:

19

Juste à côté de la liste des fonctions de votre capture d'écran devrait se trouver la documentation de la fonction actuellement sélectionnée. Pour moi, avec 2.18.12 ceux-ci se lisent:

$ geometry Renvoie la géométrie de l'entité courante. Peut être utilisé pour le traitement avec d'autres fonctions.

geometry Renvoie la géométrie d' une entité.

C'est comme la différence entre une méthode et une fonction dans la programmation orientée objet. $ géométrie est cette / auto la géométrie. Vous pouvez y penser plus comme un attribut ou une propriété peut-être.

la géométrie d'autre part nécessite / vous permet de lui passer une fonction et elle renverra la géométrie correspondante. Comme le montre la documentation, vous pouvez l'utiliser pour obtenir la géométrie à partir d'une sélection d'entités basée sur des attributs:

geometry(
  get_feature(layer, attributeField, value)
)

Ce que vous pouvez faire d'autre est juste limité par votre créativité et les sources de fonctionnalités qui lui sont transmises. :)

bugmenot123
la source
Donc, comment je peux l'utiliser lorsque j'essaie de transformer des points séparés qui forment la ligne ((make_line (make_point ("xlbl" -1000, "ylbl"), make_point (("xlbl" + length (("time"))) * 3000 +7000), "ylbl"),) ... etc Je veux dire que je veux transformer chaque point de ligne, en fonction des coordonnées dans les valeurs de la table d'attributs
Jane
Je suppose que je dois représenter chaque point de ma ligne (à partir de make_point func) en tant que géométrie, puis la transformer, dans la mesure où toute la géométrie construite make_line se transforme mal gis.stackexchange.com/questions/253002/…
Jane
Chose sûre. Cela ressemble à l'utilisation du mauvais outil, avez-vous essayé le plugin points2one ou un autre traitement?
bugmenot123
1
Non, c'est un style du calque, je ne peux pas utiliser de plugins dans les propriétés du calque. J'essaie de résoudre mon problème à force de fonctions intégrées qgis
Jane
2
La comparaison des propriétés semble bonne mais la comparaison OO est un peu faible, $geometryc'est plutôt une variable (const), peu importe si OO ou non.
Matthias Kuhn
15

$geometryrenvoie la géométrie de l' entité actuelle comme dansgeom_to_wkt($geometry)

geometryrenvoie la géométrie d'une entité spécifique comme dansgeom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

Vous utiliseriez le deuxième cas si vous vouliez, par exemple, traiter la fonction actuelle contre une fonction spécifique:

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

mixedbredie
la source