Diferença entre geometria e $ geometry QGIS

12

Esta pode ser uma pergunta trivial, mas estou confuso, qual é a diferença entre geometria e $ geometry no QGIS? Não encontrei nenhum exemplo de uso dessa função.

geometria e $ geometry

Particularmente, estou interessado em geometria; em quais casos é útil?

Jane
fonte

Respostas:

19

Ao lado da lista de funções da qual sua captura de tela é, deve estar a documentação da função atualmente selecionada. Para mim, com 2.18.12, aqueles que lêem:

$ geometry Retorna a geometria do recurso atual. Pode ser usado para processamento com outras funções.

geometry Retorna a geometria de um recurso.

É como a diferença entre método e função na programação orientada a objetos. $ geometry é a geometria deste / self . Você pode pensar nisso mais como um atributo ou propriedade, talvez.

por outro lado, a geometria requer / permite que você repasse um recurso para ele e ele retornará a geometria correspondente. Como mostra a documentação, você pode usar isso para obter a geometria de uma seleção de recurso baseada em atributo:

geometry(
  get_feature(layer, attributeField, value)
)

O que mais você pode fazer com isso é limitado pela sua criatividade e pelas fontes de recursos que passam para ele. :)

bugmenot123
fonte
Então, como eu posso usá-lo ao tentar transformar pontos separados que formam a linha ((make_line (make_point ("xlbl" -1000, "ylbl"), make_point (("xlbl" + length (("time"))) * 3000 7000), "ylbl"),) ... etc eu quero dizer que eu quero transformar cada ponto da linha, com base nas coordenadas em valores da tabela de atributos
Jane
Suponho que tenho que representar todos os pontos da minha linha (de make_point func) como geometria e depois transformá-la, na medida em que toda a geometria construída make_line transforma gis.stackexchange.com/questions/253002/…
Jane
Coisa certa. Parece usar a ferramenta errada, você já tentou o plug-in points2one ou algum outro processamento?
precisa saber é o seguinte
1
Não, este é um estilo da camada, não posso usar nenhum plug-in nas propriedades da camada. I tentar resolver o meu problema por força de qgis funções embutidas
Jane
2
A comparação de propriedades parece boa, mas a comparação OO é um pouco fraca, $geometryé uma variável (const), independentemente de ser OO ou não.
Matthias Kuhn
15

$geometryretorna a geometria do recurso atual como emgeom_to_wkt($geometry)

geometryretorna a geometria de um recurso específico como emgeom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

Você usaria o segundo caso se desejasse, por exemplo, processar o recurso atual em um recurso específico:

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

raça mista
fonte