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?

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. :)


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)))

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.