Diferencia entre geometría y $ geometry QGIS

12

Esta puede ser una pregunta trivial, pero estoy confundido, ¿cuál es la diferencia entre geometría y $ geometry en QGIS? No encontré ningún ejemplo de uso de esta función.

geometría y $ geometría

Particularmente estoy interesado en la geometría, ¿en qué casos es útil?

Jane
fuente

Respuestas:

19

Justo al lado de la lista de funciones de su captura de pantalla, debe estar la documentación de la función seleccionada actualmente. Para mí, con 2.18.12 esos leen:

$ geometry Devuelve la geometría de la entidad actual. Se puede utilizar para procesar con otras funciones.

geometry Devuelve la geometría de una entidad.

Esto es como la diferencia entre un método y una función en la programación orientada a objetos. $ geometry es la geometría de este / self . Puede pensarlo más como un atributo o propiedad tal vez.

Por otro lado, la geometría requiere / le permite pasarle una característica y le devolverá la geometría correspondiente. Como muestra la documentación, puede usar esto para obtener la geometría de una selección de características basada en atributos:

geometry(
  get_feature(layer, attributeField, value)
)

Lo que puede hacer con él está limitado por su creatividad y las fuentes de las funciones que se le transmitirán. :)

bugmenot123
fuente
Entonces, ¿cómo puedo usarlo cuando trato de transformar puntos separados que forman la línea ((make_line (make_point ("xlbl" -1000, "ylbl"), make_point (("xlbl" + length (("time")) * 3000 +7000), "ylbl"),) ... etc. Quiero decir que quiero transformar cada punto de línea, en función de las coordenadas en los valores de la tabla de atributos
Jane
Supongo que tengo que representar cada punto de mi línea (desde make_point func) como geometría, luego transformarlo, en la medida en que la geometría construida completa make_line transforma mal gis.stackexchange.com/questions/253002/…
Jane
Cosa segura. Sin embargo, esto suena como usar la herramienta incorrecta, ¿has probado el plugin points2one o algún otro procesamiento?
bugmenot123
1
No, este es un estilo de capa, no puedo usar ningún complemento en las propiedades de capa. Intento resolver mi problema a fuerza de qgis funciones incorporadas
Jane
2
La comparación de propiedades suena bien, pero la comparación OO es un poco débil, $geometryes más bien una variable (constante), independientemente de si es OO o no.
Matthias Kuhn el
15

$geometrydevuelve la geometría de la entidad actual como engeom_to_wkt($geometry)

geometrydevuelve la geometría de una característica específica como engeom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

Usaría el segundo caso si quisiera, por ejemplo, procesar la característica actual contra una característica específica:

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

perro mestizo
fuente