Vai al contenuto

Gruppo Geometria

Abstract

Questo gruppo contiene funzioni che operano sugli oggetti geometrici es: lunghezza, area.


affine_transform

Restituisce la geometria dopo una trasformazione affine. I calcoli sono nel sistema di riferimento spaziale di questa geometria. Le operazioni vengono eseguite in un ordine di scala, rotazione, traslazione. Se c'è un offset Z o M ma la coordinata non è presente nella geometria, verrà aggiunta.

Sintassi

  • affine_transform(geometry,deltaX,deltaY,rotationZ,scaleX,scaleY[,deltaZ=0][,deltaM=0][,scaleZ=1][,scaleM=1])

[ ] indica componenti opzionali

Argomenti

  • geometry una geometria
  • deltaX x-axis traslazione
  • deltaY y-axis traslazione
  • rotationZ rotation around z-axis in degrees counter-clockwise
  • scaleX_ x-axis fattore di scala
  • scaleY y-axis fattore di scala
  • deltaZ z-axis traslazione
  • deltaM m-axis traslazione
  • scaleZ z-axis fattore di scala
  • scaleM m-axis fattore di scala

Esempi

geom_to_wkt(affine_transform(geom_from_wkt('LINESTRING(1 1, 2 2)'), 2, 2, 0, 1, 1)) → 'LineString (3 3, 4 4)'
geom_to_wkt(affine_transform(geom_from_wkt('POLYGON((0 0, 0 3, 2 2, 0 0))'), 0, 0, -90, 1, 2)) → 'Polygon ((0 0, 6 0, 4 -2, 0 0))'
geom_to_wkt(affine_transform(geom_from_wkt('POINT(3 1)'), 0, 0, 0, 1, 1, 5, 0)) → 'PointZ (3 1 5)'


$area

Restituisce l'area della geometria corrente. L'area calcolata da questa funzione rispetta sia le impostazioni dell'ellissoide del progetto corrente sia delle unità di misura. Per esempio, se è stato impostato un ellissoide per il progetto allora l'area calcolata sarà ellisoidica altrimenti se non è stato impostato alcun ellissoide l'area calcolata sarà planimetrica.

Sintassi:

  • $area

Esempi:

$area → 131196498,619546

Nota bene:

Se il SR del progetto in cui si sta calcolando l'area ($area) fosse un sistema proiettato (es:EPSG 3003/4; 32632/33/34 ecc..) allora l'unità di misura sarebbe il metro, invece se il SR del progetto fosse EPSG 4326, cioè un sistema geografico, allora l'unità di misura dell'area sarebbe gradi e quindi poco comprensibile e valori piccoli (0.00001).

Osservazione:

in generale $area <> area($geometry)


$geometry

Restituisce la geometria dell'elemento attuale. Può essere usato per il processamento con altre funzioni.

nb: $geoemtry richiama l'attributo geometria

Sintassi:

  • $geometry

Esempi:

geomToWKT( $geometry ) → POINT(6 50)
area($geoamtry) → 1234567.89 mq
perimeter($geometry) → 25689.25 m

Osservazioni:

il $ indica che è relativo all'elemento corrente e non ha bisogno di argomenti.


$length

Restituisce la lunghezza di una linestring. Se hai bisogno della lunghezza del bordo di un poligono, utilizza invece $perimeter. La lunghezza calcolata da questa funzione rispetta le impostazioni sia dell'ellissoide sia delle unità di misura del progetto corrente. Per esempio, se è stato impostato un ellissoide per il progetto allora la lunghezza calcolata sarà ellisoidica altrimenti se non è stato impostato alcun ellissoide la lunghezza calcolata sarà planimetrica.

Sintassi:

  • $length

Esempi:

$length → 42.4711 

Osservazione:

Come evidenziano nella definizione della funzione, $length calcola la lunghezza rispettando le impostazioni di progetto:

Occorre cambiare entrambe le impostazioni, sia quelle dell'ellissoide → 'None/Planimetric' sia le Unità di misura per le distanze' → Gradi

Queste modofiche non valgono per l'etichettatura, la lunghezza sarà quella relativa alla geometria e quindi al suo SR.

Osservazioni:

il $ indica che è relativo all'elemento corrente e non ha bisogno di argomenti.


$perimeter

Restituisce la lunghezza del perimetro della geometria corrente. Il perimetro calcolato da questa funzione rispetta le impostazioni sia dell'ellissoide sia delle unità di misura del progetto corrente. Per esempio, se è stato impostato un ellissoide per il progetto allora il perimetro calcolato sarà ellisoidico altrimenti se non è stato impostato alcun ellissoide il perimetro calcolato sarà planimetrico.

Sintassi:

  • $perimeter

Esempi:

$perimeter → 2545897.26

Nota bene:

Si utilizza SOLO per i poligoni, nel caso di feature lineari $length

Osservazioni:

il $ indica che è relativo all'elemento corrente e non ha bisogno di argomenti.


$x

Restituisce la coordinata x della geometria corrente.

Sintassi:

  • $x

Esempi:

$x → 12.2568971

Osservazione:

  • La funzione $x restituisce la coordinata x della geometria corrente purchè sia un POINT altrimenti restituisce NULL (vedi screenshot)
  • Per ottenere le coordinate x o y occorre utilizzare una combinazione di funzioni ed: x($geometry) che vale per qualunque tipologia di geometria (point, linestring, polygon)

$x_at

Recupera una coordinata x per la geometria dell'elemento corrente.

Sintassi:

  • $x_at(i)

Argomenti:

  • i indice del punto di una linea (indici partono da 0; valori negativi si applicano dall'ultimo indice, partendo da -1)

Esempi:

$x_at(1) → 12.6882843

Osservazioni:

Le lineastring hanno un verso e quindi l'indice 0 indica il primo vertice mentre indici negativi significano che la conta inizia dalla l'ultimo vertice: -10 significa il 10-mo vertice partendo dall'ultimo vertice.


$y

Restituisce la coordinata y della geometria corrente.

Sintassi:

  • $y

Esempi:

$y → 12.2568971

Osservazione:

  • La funzione $y restituisce la coordinata y della geometria corrente purchè sia un POINT altrimenti restituisce NULL (vedi screenshot)
  • Per ottenere le coordinate x o y occorre utilizzare una combinazione di funzioni es: y($geometry) che vale per qualunque tipologia di geometria (point, linestring, polygon)

$y_at

Recupera una coordinata y per la geometria dell'elemento corrente.

Sintassi:

  • $y_at(i)

Argomenti:

  • i indice del punto di una linea (indici partono da 0; valori negativi si applicano dall'ultimo indice, partendo da -1)

Esempi:

$y_at(1) → 2

Osservazioni:

Le lineastring hanno un verso e quindi l'indice 0 indica il primo vertice mentre indici negativi significano che la conta inizia dalla l'ultimo vertice: -10 significa il 10-mo vertice partendo dall'ultimo vertice.


angle_at_vertex

Restituisce l'angolo della bisettrice (angolo medio) della geometria per un vertice specifico di una geometria di tipo linestring. Gli angoli sono in gradi in senso orario dal nord.

Sintassi:

  • angle_at_vertex(geometry, vertex)

Argomenti:

  • geometry una geometria di tipo linestring
  • vertex indice vertice, partendo da 0

Esempi:

angle_at_vertex(geometry:=geom_from_wkt('LineString(0 0, 10 0, 10 10)'),vertex:=1) → 45.0

Osservazione:

Il primo ed ultimo vertice di una lineastring aperta la funzione restituisce il valore dell'angolo e non la bisettrice.


area

Restituisce l'area di un oggetto a geometria poligonale. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SR) di detta geometria, e l'unità di misura dell'area restituita è conforme all'unità di misura del SR. Ciò differisce dal calcolo eseguito dalla funzione $area, la quale esegue calcoli ellisoidici basati sull'ellissoide del progetto e sulle impostazioni delle unità di misura dell'area.

Sintassi:

  • area(geometry)

Argomenti:

  • geometry oggetto geometria poligono

Esempi:

area($geometry) → 1234.567

Nota bene:

Se il SR del layer in cui si sta calcolando l'area (area()) fosse un sistema proiettato (es:EPSG 3003/4; 32632/33/34 ecc..) l'unità di misura sarebbe il metro, invece se il SR del layer fosse EPSG 4326, cioè un sistema geografico, allora l'unità di misura dell'area sarebbe in gradi e quindi poco comprensibile e valori piccoli.

Osservazioni:

in generale area($geometry) <> $area


Azimuth

Restituisce l'azimut dal nord quale angolo in radianti misurato in senso orario dalla verticale del punto_a al punto_b.

Sintassi:

  • azimuth(point_a, point_b)

Argomenti:

  • point_a geometria punto
  • point_b geometria punto

Esempi:

degrees( azimuth( make_point(25, 45), make_point(75, 100) ) ) → 42.273689
degrees( azimuth( make_point(75, 100), make_point(25,45) ) ) → 222.273689

Osservazione:

Azimuth per definizione restituisce un angolo in radianti, per trasformarlo in gradi usare la funzione degrees()


boundary

Restituisce l'area minima della combinazione dei confini della geometria (cioè il confine topologico della geometria). Per esempio, una geometria poligonale avrà un confine costituito dalle linee di ogni anello nel poligono. Alcuni tipi di geometrie non hanno confini, es collezioni di punti o geometrie e pertanto verrà restituito NULL.

Sintassi:

  • boundary(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt(boundary(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'LineString(1 1,0 0,-1 1,1 1)'
geom_to_wkt(boundary(geom_from_wkt('LineString(1 1,0 0,-1 1)'))) → 'MultiPoint ((1 1),(-1 1))'

Osservazioni:

funzione molto utile per la tematizzazione aggiungendo un nuovo layer con geometry generator


bounds

Restituisce la geometria che rappresenta il perimetro di delimitazione di una geometria in ingresso. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • bounds(geometry)

Argomenti:

  • geometry una geometria

Esempi:

bounds($geometry) → perimetro di delimitazione dell'elemento geometrico corrente
geom_to_wkt(bounds(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'Polygon ((-1 0, 1 0, 1 1, -1 1, -1 0))'

Osservazioni:

funzione molto utile per la tematizzazione aggiungendo un nuovo layer con geometry generator


bounds_height

Restituisce l'altezza del perimetro di delimitazione di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • bounds_height(geometry)

Argomenti:

  • geometry una geometria

Esempi:

bounds_height($geometry) → altezza del perimetro di delimitazione dell'elemento geometrico corrente
bounds_height(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')) → 1

Osservazioni:

La funzione restituisce un numero che corrisponde all'altezza del rettangolo di ingombro di una geometria.


bounds_width

Restituisce la larghezza del perimetro di delimitazione di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • bounds_width(geometry)

Argomenti:

  • geometry una geometria

Esempi:

bounds_width($geometry) → larghezza del perimetro di delimitazione di $geometry

Osservazioni:

La funzione restituisce un numero che corrisponde alla larghezza del rettangolo di ingombro di una geometria.


buffer

Restituisce una geometria che rappresenta tutti i punti la cui distanza dalla geometria è minore o uguale alla distanza inserita. I calcoli vengono effettuati nel sistema di riferimento spaziale della geometria.

Sintassi:

  • buffer(geometry,distance[,segments=8])

Argomenti:

  • geometry una geometria
  • distance distanza buffer nelle unità del layer
  • segments numero di segmenti da usare per rappresentare un quarto di cerchio quando è utilizzato uno stile di unione arrotondato. Un numero grande risulta in un buffer più morbido, con più nodi.

Esempi:

buffer($geometry, 10.5) → poligono di $geometry bufferizzato di 10.5 unità

Danger

Utilizzando SR proiettati l'unità di misura è il metro, mentre, per SR geografici è il grado, quindi attenzione al valore della distanza.

Nota bene:

La Funzione restituisce SEMPRE un poligono sia per geometry POINT, LINESTRING o **POLYGON


buffer_by_m

Crea un buffer lungo una geometria linestring in cui il diametro del buffer varia in base ai valori m nei vertici della linea.

Sintassi:

  • buffer_by_m(geometry, segments)

Argomenti:

  • geometry la geometria deve essere una (multi) geometria linestring con valori m.
  • segments numero di segmenti per approssimare le curve del quarto di cerchio nel buffer

Esempi:

buffer_by_m(geometry:=geom_from_wkt('LINESTRINGM(1 2 0.5, 4 2 0.2)'),segments:=8) → Un buffer di larghezza variabile che inizia con un diametro di 0,5 e termina con un diametro di 0,2 lungo la linea.

relativa all'esempio di sopra:

Osservazioni:

QGIS - feature


centroid

Restituisce il centro geometrico di una geometria.

Sintassi:

  • centroid(geometry)

Argomenti:

  • geometry una geometria

Esempi:

centroid($geometry) → una geometria punto

Osservazioni:

La Funzione restituisce SEMPRE una geometry **POINT


close_line

Restituisce una linestring chiusa della linestring di input aggiungendo il primo punto alla fine della linea, se non è già chiusa. Se la geometria non è una linestring o una MultiLinestring, il risultato sarà NULL.

Sintassi:

  • close_line(geometry)

Argomenti:

  • geometry una geometria linestring

Esempi:

geom_to_wkt(close_line(geom_from_wkt('LINESTRING(0 0, 1 0, 1 1)'))) → LineString (0 0, 1 0, 1 1, 0 0)
geom_to_wkt(close_line(geom_from_wkt('LINESTRING(0 0, 1 0, 1 1, 0 0)'))) → LineString (0 0, 1 0, 1 1, 0 0)


closest_point

Restituisce il punto sulla geometria1 che è più vicino alla geometria2.

Sintassi:

  • closest_point(geometry1, _geometry2)

Argomenti:

  • geometry1 geometria sulla quale cercare il punto più vicino
  • geometry geometria dalla quale cercare il punto più vicino

Esempi:

geom_to_wkt(closest_point(geom_from_wkt('LINESTRING (20 80, 98 190, 110 180, 50 75 )'),geom_from_wkt('POINT(100 100)'))) → Point(73.0769 115.384)

Osservazioni:

Utilizzando il geometry generator per i temi (il layer strade è una unica feature):

  • closest_point( geometry(get_feature('strade', 'reg',19)),$geometry)

Gif animata: geometry 1 è la rete stradale; geometry 2 sono i punti; in rosso i closestpoint


collect_geometries

Raccoglie un set di geometrie in un oggetto geometria multiparte.

Variante geometry

Sintassi:

  • collect_geometries(geometry1, geometry2...)

Argomenti:

  • geometry geometria sulla quale cercare il punto più vicino

Esempi:

geom_to_wkt(collect_geometries(make_point(1,2), make_point(3,4), make_point(5,6))) → 'MultiPoint ((1 2),(3 4),(5 6))'

Variante con array

Sintassi:

  • collect_geometries(array)

Argomenti:

  • array array con oggetti geometrici

Esempi:

geom_to_wkt(collect_geometries(array(make_point(1,2), make_point(3,4), make_point(5,6)))) → 'MultiPoint ((1 2),(3 4),(5 6))'

Osservazioni:

screen


combine

Restituisce la combinazione di due geometrie.

Sintassi:

  • combine(geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

geom_to_wkt( combine( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 2 1)' ) ) ) → MULTILINESTRING((4 4, 2 1), (3 3, 4 4), (4 4, 5 5))
geom_to_wkt( combine( geom_from_wkt( 'LINESTRING(3 3, 4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 6 6, 2 1)' ) ) ) → LINESTRING(3 3, 4 4, 6 6, 2 1)


contains

Verifica se una geometria ne contiene un'altra. Restituisce vero se e solo se nessun punto di geometry2 giace all'esterno di geometry1 e almeno un punto dell'interno di geometry2 si trova all'interno di geometry1.

Sintassi:

  • contains(geometry1, _geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

contains( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ), geom_from_wkt( 'POINT(0.5 0.5 )' ) ) → vero
contains( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → falso

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

contains(geometry(get_feature( 'province_rt_rt','pk_uid','46')),$geometry)

dove:

  • geometry1 è geometry(get_feature( 'province_rt_rt','pk_uid','46'))
  • geometry2 è $geometry

seleziono tutti i comuni contains (contenuti) nella provincia con pk_uid46 (Lucca)

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli contenuti nella provincia di Lucca).

NOT contains(geometry(get_feature( 'province_rt_rt','pk_uid','46')),$geometry)


convex_hull

Restituisce il poligono convesso di una geometria. Rappresenta la minima geometria convessa che racchiude tutte le geometria contenute nell'insieme.

Sintassi:

  • convex_hull(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt( convex_hull( geom_from_wkt( 'LINESTRING(3 3, 4 4, 4 10)' ) ) ) → POLYGON((3 3,4 10,4 4,3 3))

Osservazioni:

La funzione restituisce sempre un poligono.


crosses

Verifica se una geometria interseca un'altra. Restituisce vero (1) se le geometrie interessate hanno qualche, ma non tutti, punto interno in comune.

Sintassi:

  • crosses(geometry1, _geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

crosses( geom_from_wkt( 'LINESTRING(3 5, 4 4, 5 3)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → vero
crosses( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → falso

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

crosses(geometry(get_feature( 'fiume_arno','nome','ARNO')), $geometry)
dove:

  • geometry1 è geometry(get_feature( 'fiume_arno','nome','ARNO'))
  • geometry2 è $geometry

seleziono tutti i comuni crosses (attraversati) dal fiume ARNO

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli attraversati dal fiume ARNO).

NOT crosses(geometry(get_feature( 'fiume_arno','nome','ARNO')), $geometry)


difference

Restituisce una geometria che rappresenta la porzione della geometry_a che non interseca la geometry_b.

Sintassi:

  • difference(geometry1, _geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

geom_to_wkt( difference( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4)' ) ) ) → LINESTRING(4 4, 5 5)

Espressione:

Espressione

    -- differenza linea a - linea b
    difference( 
    make_line(  -- linea a
        start_point(geometry(get_feature_by_id('linea_a',0))), 
        start_point($geometry),
        end_point(geometry(get_feature_by_id('linea_a',0)))),
    make_line(  -- linea b
        start_point($geometry), 
        end_point(geometry(get_feature_by_id('linea_a',0))),
        end_point($geometry))
                    )
    -- NB: -- è importante ordine delle geometrie
    -- a - b è diverso da b - a

Espressione

    -- differenza linea b - linea a
    difference( 
    make_line( -- linea b
        start_point($geometry), 
        end_point(geometry(get_feature_by_id('linea_a',0))),
        end_point($geometry)),
    make_line(  -- linea a
        start_point(geometry(get_feature_by_id('linea_a',0))), 
        start_point($geometry),
        end_point(geometry(get_feature_by_id('linea_a',0))))
                    )
    -- NB: -- è importante ordine delle geometrie
    -- a - b è diverso da b - a

Esempio di sopra:


disjoint

Controlla qualora una geometria non ne interseca spazialmente un'altra. Restituisce true (1) se le geometrie non condividono nessuno spazio comune.

Sintassi:

  • disjoint(geometry1, _geometry2)

Argomenti:

  • geometry1 una geometria *geometry2 una geometria

Esempi:

disjoint( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0 ))' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → vero
disjoint( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'POINT(4 4)' )) → falso

Osservazione:

Vero = 1; Falso= 0

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

disjoint(geometry(get_feature( 'fiume_arno','nome','ARNO')), $geometry)

dove:

  • geometry1 è geometry(get_feature( 'fiume_arno','nome','ARNO'))
  • geometry2 è $geometry

seleziono tutti i comuni disjoint (disgiunti) dal fiume ARNO


distance

Restituisce la distanza minima (basata su riferimento spaziale) tra due geometrie in unità proiettate.

Sintassi:

  • distance(geometry1, _geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

distance( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(4 8)' ) ) → 4

--


distance_to_vertex

Restituisce la distanza lungo una geometria ad un vertice specificato.

Sintassi:

  • distance_to_vertex(geometry, vertex)

Argomenti:

  • geometry una geometria di tipo linestring
  • vertex indice vertice, partendo da 0; se il valore è negativo, l'indice del vertice selezionato sarà il suo conteggio totale meno il valore assoluto

Esempi:

distance_to_vertex(geometry:=geom_from_wkt('LineString(0 0, 10 0, 10 10)'),vertex:=1) → 10.0

--

esempio di sopra:


end_point

Restituisce l'ultimo nodo di una geometria.

Sintassi:

  • end_point(geometry)

Argomenti:

  • geometry oggetto geometria

Esempi:

geom_to_wkt(end_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) → 'Point (0 2)'

--

End_point di geometria poligonale:

End_point di geometria lineare:


exif_geotag

Crea una geometria puntuale dai geotag dell'exif di un file di immagine.

Sintassi

  • exif_geotag(path)

Descrizione

  • path Un percorso di file immagine.

Esempi

geom_to_wkt(exif_geotag('/my/photo.jpg')) → 'Point (2 4)'


extend

Estende l'inizio e la fine di una geometria di tipo linestring di una quantità specificata. Le linee sono estese usando la direzione di immersione del primo e dell'ultimo segmento nella linea. Le distanze sono espresse nel SR di tale geometria.

Sintassi:

  • extend(geometry, start_distance, end_distance)

Argomenti:

  • geometry una geometria (multi)linestring
  • start_distance distanza alla quale estendere l'inizio della linea
  • end_distance distanza alla quale estendere la fine della linea.

Esempi:

geom_to_wkt(extend(geom_from_wkt('LineString(0 0, 1 0, 1 1)'),1,2)) → 'LineString (-1 0, 1 0, 1 3)'
geom_to_wkt(extend(geom_from_wkt('MultiLineString((0 0, 1 0, 1 1), (2 2, 0 2, 0 5))'),1,2)) → 'MultiLineString ((-1 0, 1 0, 1 3),(3 2, 0 2, 0 7))'

--


exterior_ring

Restituisce una linestring che rappresenta l'anello esterno di una geometria poligonale. Se la geometria non è un poligono, il risultato sarà NULL.

Sintassi:

  • exterior_ring(geometry)

Argomenti:

  • geometry una geometria poligono

Esempi:

geom_to_wkt(exterior_ring(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),( 0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2, 0.1, 0.1 0.1))'))) → 'LineString (-1 -1, 4 0, 4 2, 0 2, -1 -1)'

--


extrude

Restituisce una versione estrusa della geometria (Multi-)Curve o (Multi-)Linestring in ingresso, con un'estensione specificata da x e y.

Sintassi:

  • extrude(geometry,x, y)

Argomenti:

  • geometry una geometria poligono
  • x estensione x, valore numerico
  • y estensione y, valore numerico

Esempi:

extrude(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), 1, 2) → Polygon ((1 2, 3 2, 4 3, 5 5, 4 4, 2 4, 1 2))
extrude(geom_from_wkt('MultiLineString((1 2, 3 2), (4 3, 8 3)'), 1, 2) → MultiPolygon (((1 2, 3 2, 4 4, 2 4, 1 2)),((4 3, 8 3, 9 5, 5 5, 4 3)))

Osservazioni:

Nell'esempio ho utilizzato la funzione [boundary()](boundary.md) perché la geometria di ingresso deve essere lineare.


flip_coordinates

Restituisce una copia della geometria con le coordinate x e y scambiate. Utile per riparare le geometrie che hanno invertito i valori di latitudine e longitudine.

Sintassi:

  • flip_coordinates(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt(flip_coordinates(make_point(1, 2))) → Point (2 1)

--

Esempio con vettore poligonale (aggiorno la geometry):

il flip è da usare con cautela perché cambia radicalemnte la posizione del vettore


force_rhr

Forza una geometria a rispettare la regola della mano destra, in cui l'area delimitata da un poligono si trova a destra del limite. In particolare, l'anello esterno è orientato in senso orario e l'interno in senso antiorario.

Sintassi:

  • force_rhr(geometry)

Argomenti:

  • geometry una geometria. Qualsiasi geometria non poligonale viene restituita invariata.

Esempi:

geom_to_wkt(force_rhr(geometry:=geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'))) → Polygon ((-1 -1, 0 2, 4 2, 4 0, -1 -1))

Osservazioni:

Ecco un esempio pratico della funzione (presente anche nelgli strumenti fi processing) ovvero un poligono disegnato in senso antiorario viene forzato in senso orario e l'etichettature è visibile correttamente.


geom_from_gml

Restituisce una geometria da una rappresentazione GML di una geometria.

Sintassi:

  • geom_from_gml(_gml)

Argomenti:

  • gml Rappresentazione GML di una geometria come stringa

Esempi:

geom_to_wkt(geom_from_gml('<gml:LineString srsName="EPSG:4326"><gml:coordinates>4,4 5,5 6,6</gml:coordinates></gml:LineString>') )  → 'LineString (4 4, 5 5, 6 6)'


geom_from_wkb

Restituisce una geometria creata da una rappresentazione binaria ben nota (WKB).

Sintassi:

  • geom_from_wkb(binari)

Argomenti:

  • binari Rappresentazione binaria ben nota (WKB) di una geometria (come BLOB binario)

Esempi:

geom_from_wkb( geom_to_wkb( make_point(4,5) ) ) → un oggetto geometria punto


geom_from_wkt

Restituisce una geometria creata da una rappresentazione Well-Known Text (WKT).

Sintassi:

  • geom_from_wkt_text_)

Argomenti:

  • text Rappresentazione Well-Known Text (WKT) di una geometria

Esempi:

geom_from_wkt( 'POINT(4 5)' ) → un oggetto geometria


geom_to_wkb

Restituisce la rappresentazione binaria ben nota (WKB) di una geometria come BLOB binario.

Sintassi:

  • geom_to_wkb(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkb( $geometry ) → BLOB binario contenente un oggetto geometria


geom_to_wkt

Restituisce la rappresentazione Well-Known Text (WKT) della geometria senza metadati del SR

Sintassi:

  • geom_to_wkt(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt( make_point(6, 50) ) → 'POINT(6 50)'
geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'POINT(0 0.66666667)'
geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')), 2) → 'POINT(0 0.67)'


geometry

Restituisce la geometria di un elemento con geometria

Sintassi:

  • geometry(feature)

Argomenti:

  • feature un oggetto elemento con geometria

Esempi:

geom_to_wkt( geometry( get_feature( layer, attributeField, value ) ) ) → 'POINT(6 50)'`
intersects( $geometry, geometry( get_feature( layer, attributeField, value ) ) ) → vero`

--

Usando il Select by Expression: selezionare le feature di un layer (quartieri) in funzione di altro layer (test):


geometry_n

Restituisce una geometria specifica da una raccolta di geometrie, o null se la geometria in ingresso non è una raccolta.

Sintassi:

  • geometry_n(geometry, index)

Argomenti:

  • geometry raccolta di geometrie
  • index indice della geometria da restituire, dove 1 è la prima geometria nella raccolta

Esempi:

geom_to_wkt(geometry_n(geom_from_wkt('GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))'),3)) → 'Point (1 0)'


hausdorff_distance

Restituisce la distanza di Hausdorff tra due geometrie. Questa è in sostanza una misura di come le 2 geometrie sono simili o dissimili: una distanza più bassa indica geometrie più simili. La funzione può essere eseguita con un argomento opzionale di densificazione della frazione. Se non viene specificato, viene utilizzata una approssimazione alla distanza standard di Hausdorff. Questa approssimazione è esatta o abbastanza vicina per un grande sottoinsieme di casi utili. Esempi di questi sono:

  • calcolare la distanza tra Linestrings che sono approssimativamente paralleli tra loro e sono sostanzialmente uguali in lunghezza. Ciò si verifica nelle verifica di reti lineari.
  • testare la somiglianza di geometrie.

Se l'approssimazione predefinita fornita da questo metodo è insufficiente, specifica l'argomento opzionale di densificazione della frazione. Specificando questo argomento si esegue una densificazione del segmento prima di calcolare la distanza Hausdorff discreta. Il parametro imposta la frazione con cui densificare ogni segmento. Ogni segmento sarà suddiviso in un numero di subsegmenti di uguale lunghezza, la cui frazione della lunghezza totale è la più vicina alla frazione data. Riducendo il parametro di densificazione della frazione, la distanza restituita si avvicinerà alla vera distanza Hausdorff per le geometrie.

Sintassi:

  • hausdorff_distance(geometry1, geometry2, densify_fraction)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria
  • densify_fraction quantità di densificazione della frazione

Esempi:

hausdorff_distance( geometry1:= geom_from_wkt('LINESTRING (0 0, 2 1)'),geometry2:=geom_from_wkt('LINESTRING (0 0, 2 0)')) → 2
hausdorff_distance( geom_from_wkt('LINESTRING (130 0, 0 0, 0 150)'),geom_from_wkt('LINESTRING (10 10, 10 150, 130 10)')) → 14.142135623
hausdorff_distance( geom_from_wkt('LINESTRING (130 0, 0 0, 0 150)'),geom_from_wkt('LINESTRING (10 10, 10 150, 130 10)'),0.5) → 70.0

--

Nel caso di geometrie puntuali la hausdorff_distance coincide con la funzione distance, segue un esempio:

Espressione

    format_number(
    hausdorff_distance( 
    transform($geometry,'EPSG:4326','EPSG:3004'), 
    transform(geometry(get_feature('fontanelle','n',1)),'EPSG:4326','EPSG:3004'))/1000,4) || ' km'  
    || '\n'|| 
    format_number(
    distance( 
    transform($geometry,'EPSG:4326','EPSG:3004'), 
    transform(geometry(get_feature('fontanelle','n',1)),'EPSG:4326','EPSG:3004'))/1000,4) || ' km'

--

In questo esempio confronto due layer: il numero più piccolo indica il poligono più simile a al poligono più grande.


inclination

Restituisce l'inclinazione misurata dallo zenit (0) al nadir (180) del punto_a al punto_b.

Sintassi:

  • inclination(point_a, point_b)

Argomenti:

  • point_a geometria punto
  • point_b geometria punto

Esempi:

inclination( make_point( 5, 10, 0 ), make_point( 5, 10, 5 ) ) → 0.0
inclination( make_point( 5, 10, 0 ), make_point( 5, 10, 0 ) ) → 90.0
inclination( make_point( 5, 10, 0 ), make_point( 50, 100, 0 ) ) → 90.0
inclination( make_point( 5, 10, 0 ), make_point( 5, 10, -5 ) ) → 180.0

--


interior_ring_n

Restituisce un anello interno specifico da una geometria poligonale, o null se la geometria non è un poligono.

Sintassi:

  • interior_ring_n(geometry, index)

Argomenti:

  • geometry geometria poligono
  • index Indice dell'anello interno da restituire, dove 1 è il primo anello interno

Esempi:

geom_to_wkt(interior_ring_n(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1),(-1 -1, 4 0, 4 2, 0 2, -1 -1))'),1)) → 'LineString (-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))'

Osservazioni:

Restituisce una lineastring!!!


intersection

Restituisce una geometria che rappresenta la porzione condivisa fra le due geometrie.

Sintassi:

  • intersection(geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

geom_to_wkt( intersection( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4)' ) ) ) → 'LINESTRING(3 3, 4 4)'
geom_to_wkt( intersection( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'MULTIPOINT(3.5 3.5, 4 5)' ) ) ) → 'POINT(3.5 3.5)'

Espressione

    -- intersezione tra le due linee
    intersection( 
    make_line( -- linea a
        start_point($geometry), 
        end_point(geometry(get_feature_by_id('linea_a',0))),
        end_point($geometry)),
    make_line(  -- linea b
        start_point(geometry(get_feature_by_id('linea_a',0))), 
        start_point($geometry),
        end_point(geometry(get_feature_by_id('linea_a',0))))
                    )
    -- NB: -- l' ordine delle geometrie è indifferente

--


intersects

Controlla qualora una geometria ne interseca un'altra. Restituisce true (1) se la geometrie si intersecano spazialmente (condividono una porzione di spazio) altrimenti da false (0).

Sintassi:

  • intersects(geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

intersects( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → vero
intersects( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'POINT(5 5)' ) ) → falso

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

intersects(geometry(get_feature( 'province_rt_rt','pk_uid','46')),$geometry)

dove:

  • geometry1 è geometry(get_feature( 'province_rt_rt','pk_uid','46'))
  • geometry2 è $geometry

seleziono tutti i comuni intersects (interseca) nella provincia con pk_uid46 (Lucca)

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli intersecati con la provincia di Lucca).

NOT intersects(geometry(get_feature( 'province_rt_rt','pk_uid','46')),$geometry)


intersects_bbox

Controlla se il perimetro di delimitazione della geometria si sovrappone a quello di un'altra geometria. Restituisce vero (1) se le geometrie intersecano spazialmente il perimetro di delimitazione definito e falso (0) se non lo intersecano.

Sintassi:

  • intersects_bbox(geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

intersects_bbox( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → vero
intersects_bbox( geom_from_wkt( 'POINT(6 5)' ), geom_from_wkt( 'POLYGON((3 3, 4 4, 5 5, 3 3))' ) ) → falso


is_closed

Restituisce vero (true) se una linestring è chiusa (i punti di inizio e di fine coincidono), o falso (false) se una linestring non è chiusa. Se la geometria non è una linestring, il risultato sarà NULL.

Sintassi:

  • is_closed(geometry)

Argomenti:

  • geometry una geometria linestring

Esempi:

is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → falso
is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) → vero

--


is_empty

Restituisce vero se una geometria è vuota (senza coordinate), falso se la geometria non è vuota e NULL se non c'è geometria. Vedi anche is_empty_or_null.

Sintassi:

  • is_empty(geometry)

Argomenti:

  • geometry una geometria

Esempi:

is_empty(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → falso
is_empty(geom_from_wkt('LINESTRING EMPTY')) → vero
is_empty(geom_from_wkt('POINT(7 4)')) → falso
is_empty(geom_from_wkt('POINT EMPTY')) → vero

screen


is_empty_or_null

Restituisce vero se una geometria è vuota (senza coordinate), falso se la geometria non è vuota e NULL se non c'è geometria. Vedi anche is_empty_or_null_or_null.

Sintassi:

  • is_empty_or_null(geometry)

Argomenti:

  • geometry una geometria

Esempi:

is_empty_or_null(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → falso
iis_empty_or_null(geom_from_wkt('POINT(7 4)')) → falso
is_empty_or_null(geom_from_wkt('POINT EMPTY')) → vero

screen


is_multipart

Restituisce vero se la geometria è di tipo Multi.

Sintassi:

  • is_multipart(geometry)

Argomenti:

  • geometry una geometria

Esempi:

is_multipart(geom_from_wkt('MULTIPOINT ((0 0),(1 1),(2 2))')) → vero
is_multipart(geom_from_wkt('POINT (0 0)')) → falso


is_valid

Restituisce vero se una geometria è valida; se è ben formato in 2D secondo le regole OGC

Sintassi:

  • is_valid(geometry)

Argomenti:

  • geometry una geometria

Esempi:

is_valid(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) → vero
is_valid(geom_from_wkt('LINESTRING(0 0)')) → falso


length

Restituisce il numero di caratteri in una stringa o la lunghezza di una geometria di tipo linestring.

Variabile stringa

Restituisce il numero di caratteri contenuti in una stringa.

Sintassi:

  • length(string)

Argomenti:

  • string stringa della quale calcolare la lunghezza

Esempi:

length('hello') → 5

Variabile geometria

Calcola la lunghezza di un oggetto a geometria lineare. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SR) di detta geometria, e l'unità di misura della lunghezza restituita è conforme all'unità di misura del SR. Ciò differisce dal calcolo eseguito dalla funzione $length, la quale esegue calcoli ellissoidici basati sull'ellissoide del progetto e sulle impostazioni delle unità di distanza.

Sintassi:

  • length(geometry)

Argomenti:

  • geometry oggetto geometria linea

Esempi:

  • length(geom_from_wkt('LINESTRING(0 0, 4 0)')) → 4.0


length3D

Calcola la lunghezza 3D di un oggetto linea geometrica. Se la geometria non è un oggetto linea 3D, restituisce la sua lunghezza 2D. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SR) di questa geometria, e le unità della lunghezza restituita corrisponderanno alle unità per l'SR. Questo differisce dai calcoli eseguiti dalla funzione $length, che eseguirà calcoli ellissoidali basati sulle impostazioni dell'ellissoide e dell'unità di distanza del progetto.

Sintassi:

  • length3D(geometry)

Argomenti:

  • geometry oggetto geometria linea

Esempi:

length3D(geom_from_wkt('LINESTRINGZ(0 0 0, 3 0 4)')) → 5.0


line_interpolate_angle

Restituisce l'angolo parallelo alla geometria ad una distanza specifica lungo una geometria di tipo linestring. Gli angoli sono in gradi in senso orario dal nord.

Sintassi:

  • line_interpolate_angle(geometry, distance)

Argomenti:

  • geometry una geometria di tipo linestring
  • distance distanza lungo la linea a cui interpolare l'angolo

Esempi:

line_interpolate_angle(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5) → 90.0

--


line_interpolate_point

Restituisce il punto interpolato ad una specifica distanza lungo una geometria di tipo linestring.

Sintassi:

  • line_interpolate_point(geometry, distance)

Argomenti:

  • geometry una geometria di tipo linestring
  • distance distanza lungo la linea

Esempi:

geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5)) → 'Point (4 0)'

--


line_locate_point

Restituisce la distanza lungo una linestring corrispondente alla posizione più vicina alla linestring di una geometria puntuale specificata.

Sintassi:

  • line_locate_point(geometry, point)

Argomenti:

  • geometry una geometria di tipo linestring
  • point geometria puntuale per cui ricercare la posizione più vicina sulla linestring

Esempi:

line_locate_point(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),point:=geom_from_wkt('Point(5 1)')) → 5.0


line_merge

Restituisce una geometria di tipo LineString o MultiLineString, dove qualsiasi LineString connessa dalla geometria in ingresso è stata fusa (merge) in una linestring singola. Questa funzione restituirà NULL se la geometria considerata non è una LineString/MultiLineString.

Sintassi:

  • line_merge(geometry)

Argomenti:

  • geometry una geometria di tipo LineString/MultiLineString

Esempi:

geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(1 1, 2 2))'))) → 'LineString(0 0,1 1,2 2)'
geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(11 1, 21 2))'))) → 'MultiLineString((0 0, 1 1),(11 1, 21 2)'

--


line_substring

Restituisce la porzione di una geometria di linea (o curva) che rientra tra le distanze iniziale e finale specificate (misurata dall'inizio della linea). I valori Z e M sono linearmente interpolati dai valori esistenti.

Sintassi:

  • line_substring(geometry,start_distance,end_distance)

Argomenti:

  • geometry una geometria lineare o curva
  • start_distance distanza all'inizio della sottostringa
  • end_distance distanza alla fine della sottostringa

Esempi:

geom_to_wkt(line_substring(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),start_distance:=2,end_distance:=6)) → 'LineString (2 0,6 0)'
line_substring( $geometry,  $length *.1,$length *.6) → <geometria: LineString>

--

Funzione utile per la tematizzazione


m

Restituisce il valore m di una geometria puntuale.

Sintassi:

  • m(geometry)

Argomenti:

  • geometry una geometria punto

Esempi:

( geom_from_wkt( 'POINTM(2 5 4)' ) ) → 4


m_max

Restituisce il valore minimo m (misura) di una geometria.

Sintassi:

  • m_max(geometry)

Argomenti:

  • geometry una geometria contenente m valori

Esempi:

m_max( make_point_m( 0,0,1 ) ) → 1
m_max(make_line( make_point_m( 0,0,1 ), make_point_m( -1,-1,2 ), make_point_m( -2,-2,0 ) ) ) → 2


m_min

Restituisce il valore minimo m (misura) di una geometria.

Sintassi:

  • m_min(geometry)

Argomenti:

  • geometry una geometria contenente m valori

Esempi:

m_min( make_point_m( 0,0,1 ) ) → 1
m_min(make_line( make_point_m( 0,0,1 ), make_point_m( -1,-1,2 ), make_point_m( -2,-2,0 ) ) ) → 0


main_angle

Restituisce l'angolo principale di una geometria (senso orario, in gradi dal Nord), il quale rappresenta l'angolo dell'orientamento del rettangolo minimo che copre completamente la geometria.

Sintassi:

  • main_angle(geometry)

Argomenti:

  • geometry una geometria poligono

Esempi:

main_angle(geom_from_wkt('Polygon ((321577 129614, 321581 129618, 321585 129615, 321581 129610, 321577 129614))')) → 38.66

Osservazioni:


make_circle

Crea un poligono circolare.

Sintassi:

  • make_circle(center, radius[, segments=36])

[ ] indica componenti opzionali

Argomenti:

  • center centro del cerchio
  • radius raggio del cerchio
  • segments argomento opzionale per la segmentazione del poligono. Valore predefinito pari a 36

Esempi:

geom_to_wkt(make_circle(make_point(10,10), 5, 4)) → 'Polygon ((10 15, 15 10, 10 5, 5 10, 10 15))'
geom_to_wkt(make_circle(make_point(10,10,5), 5, 4)) → 'PolygonZ ((10 15 5, 15 10 5, 10 5 5, 5 10 5, 10 15 5))''
geom_to_wkt(make_circle(make_point(10,10,5,30), 5, 4)) → 'PolygonZM ((10 15 5 30, 15 10 5 30, 10 5 5 30, 5 10 5 30, 10 15 5 30))'


make_ellipse

Crea un poligono ellittico.

Sintassi:

  • make_ellipse(center, semi_major_axis, semi_minor_axis, azimuth[, segments=36])

Argomenti:

  • center centro dell'ellisse
  • semi_major_axis semi-asse maggiore dell'ellisse
  • semi_minor_axis semi-asse minore dell'ellisse
  • azimuth orientazione dell'ellisse
  • segments argomento opzionale per la segmentazione del poligono. Valore predefinito pari a 36

Esempi:

geom_to_wkt(make_ellipse(make_point(10,10), 5, 2, 90, 4)) → 'Polygon ((15 10, 10 8, 5 10, 10 12, 15 10))
geom_to_wkt(make_ellipse(make_point(10,10,5), 5, 2, 90, 4)) → 'PolygonZ ((15 10 5, 10 8 5, 5 10 5, 10 12 5, 15 10 5))'
geom_to_wkt(make_circle(make_point(10,10,5,30), 5, 2, 90, 4)) → 'PolygonZM ((15 10 5 30, 10 8 5 30, 5 10 5 30, 10 12 5 30, 15 10 5 30))'


make_line

Crea una geometria linea da una serie di geometrie punto.

Sintassi:

  • make_line(point1, point2, …_)

Argomenti:

  • point una geometria punto

Esempi:

geom_to_wkt(make_line(make_point(2,4),make_point(3,5))) → 'LineString (2 4, 3 5)'
geom_to_wkt(make_line(make_point(2,4),make_point(3,5),make_point(9,7))) → 'LineString (2 4, 3 5, 9 7)'

Array variant

I vertici di linea sono specificati come una matrice di punti.

Sintassi:

  • make_line(array)

Argomenti:

  • array Matrice di punti

Esempi:

geom_to_wkt(make_line(array(make_point(2,4),make_point(3,5),make_point(9,7)))) → 'LineString (2 4, 3 5, 9 7)'

Espressione

    make_line(
    array(geometry(
        get_feature_by_id('fontanelle_Palermo',$id))),
    array(geometry(
        get_feature_by_id('fontanelle_Palermo',not $id%2)))
            ) 


make_point

Crea una geometria punto da valori x ed y (e opzionalmente z ed m).

Sintassi:

  • make_point(x, y, z, m)

Argomenti:

  • x coordinata x del punto
  • y coordinata y del punto
  • z coordinata opzionale z del punto
  • m valore m del punto

Esempi:

geom_to_wkt(make_point(2,4,6,8)) → 'PointZM (2 4 6 8)'


make_point_m

Crea una geometria punto da una coordinata x, y ed un valore m.

Sintassi:

  • make_point_m_(x, y, m)

Argomenti:

  • x coordinata x del punto
  • y coordinata y del punto
  • m valore m del punto

Esempi:

geom_to_wkt(make_point_m(2,4,6)) → 'PointM (2 4 6)'


make_polygon

Crea una geometria poligono da un'anello esterno e opzionalmente da geometrie ad anello interne.

Sintassi:

  • make_polygon(outerRing[, innerRing1][, innerRing2] …_)

[ ] indica componenti opzionali

Argomenti:

  • outerRing geometria a linea chiusa per l'anello esterno del poligono
  • innerRing geometria a linea chiusa opzionale per anello interno

Esempi:

geom_to_wkt(make_polygon(geom_from_wkt('LINESTRING( 0 0, 0 1, 1 1, 1 0, 0 0 )'))) → 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0))'
geom_to_wkt(make_polygon(geom_from_wkt('LINESTRING( 0 0, 0 1, 1 1, 1 0, 0 0 )'),geom_from_wkt('LINESTRING( 0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2 0.1, 0.1 0.1 )'),geom_from_wkt('LINESTRING( 0.8 0.8, 0.8 0.9, 0.9 0.9, 0.9 0.8, 0.8 0.8 )'))) → 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0),(0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2 0.1, 0.1 0.1),(0.8 0.8, 0.8 0.9, 0.9 0.9, 0.9 0.8, 0.8 0.8))'


make_rectangle_3points

Crea un rettangolo da 3 punti.

Sintassi:

  • make_rectangle_3points(point1,point2,point3[,option=0]…)

Argomenti:

  • point1 Primo punto
  • point2 Secondo punto
  • point3 Terzo punto
  • option Un argomento facoltativo per costruire il rettangolo. Di default questo valore è 0. Il valore può essere 0 (distanza) o 1 (proiettato). Distanza opzione: la seconda distanza è uguale alla distanza tra il 2 ° e il 3 ° punto. Opzione proiettata: la seconda distanza è uguale alla distanza della proiezione perpendicolare del terzo punto sul segmento o della sua estensione.

Esempi:

geom_to_wkt(make_rectangle_3points(make_point(0, 0), make_point(0,5), make_point(5, 5), 0))) → 'Polygon ((0 0, 0 5, 5 5, 5 0, 0 0))'
geom_to_wkt(make_rectangle_3points(make_point(0, 0), make_point(0,5),make_point(5, 3), 1))) → 'Polygon ((0 0, 0 5, 5 5, 5 0, 0 0))'

--

make_regular_polygon

Crea un poligono regolare.

Sintassi:

  • make_regular_polygon(center, radius, number_sides[, circle=0])

[ ] indica componenti opzionali

Argomenti:

  • center centro del poligono regolare
  • radius secondo punto. Il primo se il poligono regolare è inscritto. Il punto intermedio del primo lato se il poligono regolare è circoscritto.
  • number_sides Numero di lati del poligono regolare
  • circle Argomento opzionale per la costruzione del poligono regolare. Il valore predefinito è 0. Il valore può essere 0 (poligono iscritto) o 1 (poligono circoscritto)

Esempi:

geom_to_wkt(make_regular_polygon(make_point(0,0), make_point(0,5), 5)) → 'Polygon ((0 5, 4.76 1.55, 2.94 -4.05, -2.94 -4.05, -4.76 1.55, 0 5))'
geom_to_wkt(make_regular_polygon(make_point(0,0), project(make_point(0,0), 4.0451, radians(36)), 5)) → 'Polygon ((0 5, 4.76 1.55, 2.94 -4.05, -2.94 -4.05, -4.76 1.55, 0 5))'


make_square

Crea un quadrato da una diagonale.

Sintassi:

  • make_square(point1,point2)

Argomenti:

  • point1 Primo punto della diagonale
  • point2 Secondo punto della diagonale

Esempi:

geom_to_wkt(make_square( make_point(0,0), make_point(5,5))) → 'Polygon ((0 0, -0 5, 5 5, 5 0, 0 0))'
geom_to_wkt(make_square( make_point(5,0), make_point(5,5))) → 'Polygon ((5 0, 2.5 2.5, 5 5, 7.5 2.5, 5 0))'


make_triangle

Crea un poligono triangolare

Sintassi:

  • make_triangle(point1,point2,point3)

Argomenti:

  • point1 Primo punto del triangolo
  • point2 Secondo punto del triangolo
  • point3 Secondo punto del triangolo
  • Esempi:
geom_to_wkt(make_triangle(make_point(0,0), make_point(5,5), make_point(0,10))) → 'Triangle ((0 0, 5 5, 0 10, 0 0))'
geom_to_wkt(boundary(make_triangle(make_point(0,0), make_point(5,5), make_point(0,10)))) → 'LineString (0 0, 5 5, 0 10, 0 0)'


minimal_circle

Restituisce la circonferenza circoscritta minima di una geometria. Rappresenta il cerchio minimo che circoscrive tutte le geometrie presenti in un dataset.

Sintassi:

  • minimal_circle(geometry[, segments=36])

[ ] indica componenti opzionali

Argomenti:

  • geometry una geometria
  • segments argomento opzionale per la segmentazione del poligono. Valore predefinito pari a 36

Esempi:

geom_to_wkt( minimal_circle( geom_from_wkt( 'LINESTRING(0 5, 0 -5, 2 1)' ), 4 ) ) → Polygon ((0 5, 5 -0, -0 -5, -5 0, 0 5))
geom_to_wkt( minimal_circle( geom_from_wkt( 'MULTIPOINT(1 2, 3 4, 3 2)' ), 4 ) ) → Polygon ((3 4, 3 2, 1 2, 1 4, 3 4))

--


nodes_to_points

Restituisce una geometria multi-punti costituita da ogni nodo della geometria in ingresso.

Sintassi:

  • nodes_to_points(geometry[, ignore_closing_nodes=false])

Argomenti:

  • geometry oggetto geometria
  • ignore_closing_nodes argomento opzionale che specifica se includere i nodi duplicati che chiudono linee o poligoni ad anello. Normalmente false, impostare a true per evitare di includere questi nodi duplicati nella raccolta in uscita.

Esempi:

geom_to_wkt(nodes_to_points(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'MultiPoint ((0 0),(1 1),(2 2))'
geom_to_wkt(nodes_to_points(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'),true)) → 'MultiPoint ((-1 -1),(4 0),(4 2),(0 2))'

--


num_geometries

Restituisce il numero di geometrie in una raccolta di geometrie, o null se la geometria in ingresso non è una raccolta.

Sintassi:

  • num_geometries(geometry)

Argomenti:

  • geometry raccolta di geometrie

Esempi:

num_geometries(geom_from_wkt('GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))')) → 4


num_interior_rings

Restituisce il numero di anelli interni in un poligono o in una raccolta di geometrie, o null se la geometria in ingresso non è un poligono o una raccolta.

Sintassi:

  • num_interior_rings(geometry)

Argomenti:

  • geometry geometria in ingresso

Esempi:

num_interior_rings(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))')) → 1


num_points

Restituisce il numero di vertici in una geometria.

Sintassi:

  • num_points(geometry)

Argomenti:

  • geometry una geometria

Esempi:

num_points($geometry) → numero di vertici in $geometry


num_rings

Restituisce il numero di anelli (includendo anche anelli esterni) in un poligono o in una raccolta di geometrie, o null se la geometria in ingresso non è un poligono o una raccolta.

Sintassi:

  • num_rings(geometry)

Argomenti:

  • geometry geometria in ingresso

Esempi:

num_rings(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))')) → 2

--


offset_curve

Restituisce una geometria formata facendo l'offset di una geometria di tipo linestring a lato. Le distanze sono espresse nel SR di tale geometria.

Sintassi:

  • offset_curve(geometry, distance[, segments=8][, join=1][, miter_limit=2.0])

[ ] indica componenti opzionali

Argomenti:

  • geometry una geometria (multi)linestring
  • distance distanza di offset. Valori positivi saranno bufferizzati a sinistra delle linee, valori negativi a destra
  • segments numero di segmenti da usare per rappresentare un quarto di cerchio quando è utilizzato uno stile di unione arrotondato. Un numero grande risulta in una linea più morbida, con più nodi.
  • join stile di unione per gli angoli, dove 1 = arrotondato, 2 = seghettato e 3 = smussato
  • miter_limit limite sul rapporto di seghettatura usato per angoli molto appuntiti (solamente quando si usano le unioni seghettate)

Esempi:

offset_curve($geometry, 10.5) → linea scostata a sinistra di 10.5 unità
offset_curve($geometry, -10.5) → linea scostata a destra di 10.5 unità
offset_curve($geometry, 10.5, segments=16, join=1) → linea scostata a sinistra di 10.5 unità, usando più segmenti per risultare in una curva più morbida
offset_curve($geometry, 10.5, join=3) → linea scostata a sinistra di 10.5 unità, usando un'unione smussata

Osservazioni:

La linea è scostata a sinistra o destra rispetto al verso della linea:


order_parts

Ordina le parti di una MultiGeometria secondo un dato criterio

Sintassi:

  • order_parts(geometry, orderby[, ascending=true])

[ ] indica componenti opzionali

Argomenti:

  • geometry una geometria multi-tipo
  • orderby un espressione stringa che definisce il criterio di ordinamento
  • ascending booleano, True per ascendente, False per discendente

Esempi:

order_parts(geom_from_wkt('MultiPolygon (((1 1, 5 1, 5 5, 1 5, 1 1)),((1 1, 9 1, 9 9, 1 9, 1 1)))'), 'area($geometry)', False) → MultiPolygon (((1 1, 9 1, 9 9, 1 9, 1 1)),((1 1, 5 1, 5 5, 1 5, 1 1)))
order_parts(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), '1', True) → LineString(1 2, 3 2, 4 3)


oriented_bbox

Restituisce una geometria che rappresenta il perimetro di delimitazione minimo orientato di una geometria.

Sintassi:

  • oriented_bbox(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt(oriented_bbox(geom_from_wkt('MULTIPOINT(1 2, 3 4, 3 2)'))) → 'Polygon ((1 2, 2 1, 4 3, 3 4, 1 2))'


overlaps

Controlla qualora una geometria si sovrapponga ad un'altra. Restituisce true (1) se le geometrie condividono aree, ma non sono completamente contenute una nell'altra.

Sintassi:

  • overlaps(geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

overlaps( geom_from_wkt( 'LINESTRING(3 5, 4 4, 5 5, 5 3)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → 1
overlaps( geom_from_wkt( 'LINESTRING(0 0, 1 1)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → 0

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

overlaps(geometry(get_feature( 'cerchio','id','1')), $geometry)

dove:

  • geometry1 è geometry(get_feature('cerchio','id','1'))
  • geometry2 è $geometry

seleziono tutti i comuni overlaps (sovrapposti) al cerchio in figura.

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli sovrapposti con il cerchio).

NOT overlaps(geometry(get_feature('cerchio','id','1')),$geometry)


overlay_contains

Restituisce se l'elemento corrente contiene spazialmente almeno un elemento da un layer target o un array di risultati basati su espressioni per gli elementi nel layer target contenuti nell'elemento corrente. Ulteriori informazioni sul predicato GEOS "Contains" sottostante, come descritto nella funzione PostGIS ST_CONTAINS.

Sintassi:

  • overlay_contains(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_contains('regions') → true se l'elemento corrente contiene spazialmente una regione
overlay_contains('regions', filter:= population > 10000) → vero se l'elemento corrente contiene spazialmente una regione con una popolazione maggiore di 10000
overlay_contains('regions', name) → un array di nomi, per le regioni contenute nell'elemento corrente
array_to_string(overlay_contains('regions', name)) → una stringa come una lista di nomi separata da virgola, per le regioni contenute nell'elemento corrente
overlay_contains('regions', name)[0] → una stringa con il nome della regione contenuta nell'elemento corrente
array_sort(overlay_contains(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni contenute nell'elemento corrente e con una popolazione superiore a 10000
overlay_contains(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni contenute nell'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_crosses

Restituisce se l'elemento corrente attraversa spazialmente almeno un elemento di un layer target o un array di risultati basati su espressioni per gli elementi nel layer target attraversati dall'elemento corrente. Ulteriori informazioni sul predicato GEOS "Crosses" sottostante, come descritto nella funzione PostGIS ST_Crosses.

Sintassi:

  • overlay_crosses(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_crosses('regions') → true se l'elemento corrente attraversa spazialmente una regione
overlay_crosses('regions', filter:= population > 10000) → vero se l'elemento corrente attraversa spazialmente una regione con una popolazione maggiore di 10000
overlay_crosses('regions', name) → un array di nomi, per le regioni attraversate dall'elemento corrente
array_to_string(overlay_crosses('regions', name)) → una stringa come una lista di nomi separata da virgola, per le regioni attraversate dall'elemento corrente
overlay_crosses('regions', name)[0] → una stringa con il nome della prima regioni attraversata dall'elemento corrente
array_sort(overlay_crosses(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni attraversate dall'elemento corrente e con una popolazione superiore a 10000
overlay_crosses(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni attraversate dall'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_disjoint

Restituisce se l'elemento corrente è spazialmente disgiunto da tutti gli elementi di un layer target, o un array di risultati basati su espressione per gli elementi nel layer target che sono disgiunti dall'elemento corrente. Ulteriori informazioni sul sottostante predicato GEOS "Disjoint", come descritto nella funzione PostGIS ST_Disjoint.

Sintassi:

  • overlay_disjoint(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_disjoint('regions') → true se l'elemento corrente è spazialmente disgiunto da tutte le regioni
overlay_disjoint('regions', filter:= population > 10000) → vero se l'elemento corrente è spazialmente disgiunto da tutte le regioni con una popolazione maggiore di 10000
overlay_disjoint('regions', name) → un array di nomi, per le regioni spazialmente disgiunte dall'elemento corrente
array_to_string(overlay_disjoint('regions', name)) → una stringa come una lista di nomi separata da virgola, per le regioni spazialmente disgiunte dall'elemento corrente
overlay_disjoint('regions', name)[0] → una stringa con il nome della regione spazialmente disgiunte dall'elemento corrente
array_sort(overlay_disjoint(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni spazialmente disgiunte dall'elemento corrente e con una popolazione superiore a 10000
overlay_disjoint(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni spazialmente disgiunte dall'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_equals

Restituisce se l'elemento corrente è spazialmente uguale ad almeno un elemento da un layer target o un array di risultati basati su espressioni per gli elementi nel layer target che sono spazialmente uguali all'elemento corrente. Ulteriori informazioni sul predicato GEOS "Equals" sottostante, come descritto nella funzione PostGIS ST_Equals.

Sintassi:

  • overlay_equals(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_equals('regions') → true se l'elemento corrente è spazialmente uguale ad una regione
overlay_equals('regions', filter:= population > 10000) → vero se l'elemento corrente è spazialmente uguale ad una regione con una popolazione maggiore di 10000
overlay_equals('regions', name) → un array di nomi, per le regioni spazialmente uguali all'elemento corrente
array_to_string(overlay_equals('regions', name)) → una stringa come lista di nomi separati da virgole, per le regioni spazialmente uguali all'elemento corrente
overlay_equals('regions', name)[0] → una stringa con il nome della regione spazialmente uguale all'elemento corrente
array_sort(overlay_equals(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni spazialmente uguali all'elemento corrente e con una popolazione superiore a 10000
overlay_equals(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni spazialmente uguali all'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_intersects

Restituisce se l'elemento corrente interseca spazialmente almeno un elemento da un layer target o un array di risultati basati su espressioni per gli elementi nel layer target intersecati dall'elemento corrente. Ulteriori informazioni sul predicato GEOS "Intersects" sottostante, come descritto nella funzione PostGIS ST_INTERSECTS.

Sintassi:

  • overlay_intersects(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_intersects('regions') → true se l'elemento corrente interseca spazialmente una regione
overlay_intersects('regions', filter:= population > 10000) → vero se l'elemento corrente interseca spazialmente una regione con una popolazione maggiore di 10000
overlay_intersects('regions', name) → un array di nomi, per le regioni intersecate dall'elemento corrente
array_to_string(overlay_intersects('regions', name)) → una stringa come una lista di nomi separata da virgola, per le regioni intersecate dall'elemento corrente
overlay_intersects('regions', name)[0] → una stringa con il nome della regione intersecata dall'elemento corrente
array_sort(overlay_intersects(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni intersecate dall'elemento corrente e con una popolazione maggiore di 10000
overlay_intersects(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni intersecate dall'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_nearest

Restituisce se l'elemento corrente ha elementi da un layer target entro una data distanza o un array di risultati basati su espressioni per gli elementi nel layer di target entro una distanza dall'elemento corrente. Nota: questa funzione può essere lenta e consuma molta memoria per layer con molte feature.

Sintassi:

  • overlay_contains(layer[,expression][,filter][,limit=1][,max_distance][,cache])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • max_distance una distanza opzionale per limitare la ricerca di elementi corrispondenti. Se non impostato, verranno usati tutti gli elementi nel layer di destinazione.
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_nearest('airports') → true se il layer "airports" ha almeno un elemento
overlay_nearest('airports', max_distance:= 5000) → vero se è presente un aeroporto entro una distanza di 5000 unità di mappa dall'elemento corrente
overlay_nearest('airports', name) → il nome dell'aereoporto più vicino all'elemento corrente, come array
array_to_string(overlay_nearest('airports', name)) → il nome dell'aereoporto più vicino all'elemento corrente, come stringa
overlay_nearest(layer:='airports', expression:= name, max_distance:= 5000) → il nome dell'aereoporto più vicino entro una distanza di 5000 unità di mappa dall'elemento corrente, come array
overlay_nearest(layer:='airports', expression:="name", filter:= "Use"='Civilian', limit:=3) → un array di nomi, per un massimo di tre aeroeporti civili più vicini ordinati per distanza
overlay_nearest(layer:='airports', expression:="name", limit:= -1, max_distance:= 5000) → un array di nomi, per tutti gli aeroporti entro una distanza di 5000 unità di mappa dall'elemento corrente, ordinato per distanza.

Esempio 45: http://hfcqgis.opendatasicilia.it/it/latest/esempi/linea_min_distanza2.html

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_touches

Restituisce se l'elemento corrente tocca spazialmente almeno un elemento da un layer target o un array di risultati basati su espressioni per gli elementi nel layer target toccati dall'elemento corrente. Leggi ulteriori informazioni sul predicato GEOS "Touches", come descritto nella funzione PostGIS ST_TOUCHES.

Sintassi:

  • overlay_touches(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_touches('regions') → true se l'elemento corrente tocca spazialmente una regione
overlay_touches('regions', filter:= population > 10000) → vero se l'elemento corrente tocca spazialmente una regione con una popolazione maggiore di 10000
overlay_touches('regions', name) → un array di nomi, per le regioni tocacte dall'elemento corrente
string_to_array(overlay_touches('regions', name)) → una stringa come lista di nomi separati da virgole, per le regioni toccate dall'elemento corrente
overlay_touches('regions', name)[0] → una stringa con il nome della regione toccata dall'elemento corrente
array_sort(overlay_touches(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni toccate dall'elemento attuale e con una popolazione superiore a 10000
overlay_touches(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni toccate dall'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


overlay_within

Restituisce se l'elemento corrente è spazialmente all'interno di almeno un elemento da layer destinazione, o un array di risultati basati su espressione per gli elementi nel layer destinazione che contengono l'elemento corrente. Ulteriori informazioni sul sottostante predicato GEOS "Within", come descritto nella funzione PostGIS ST_WITHIN.

Sintassi:

  • overlay_within(layer[,expression][,filter][,limit][,cache=false])

[ ] indica componenti opzionali

Argomenti:

  • layer l'altro layer;
  • expression un'espressione opzionale per valutare gli elementi dell'altro layer (se non impostata, la funzione restituisce semplicemente un booleano che indica se c'è almeno una corrispondenza);
  • filter un'espressione opzionale per filtrare gli elementi corrispondenti (se non impostata, verranno restituiti tutti gli elementi);
  • limit un numero intero opzionale per limitare il numero di elementi corrispondenti (se non impostato, verranno restituiti tutti gli elementi);
  • cache imposta su "vero" per creare un indice spaziale locale (il più delle volte, questo è indesiderato, a meno che tu non stia lavorando con un fornitore di dati particolarmente lento);

[ ] indica componenti opzionali

Esempi:

overlay_within('regions') → true se l'elemento corrente è spazialmente all'interno di una regione
overlay_within('regions', filter:= population > 10000) → vero se l'elemento corrente è spazialmente all'interno di una regione con una popolazione maggiore di 10000
overlay_within('regions', name) → un array di nomi, per le regioni contenenti l'elemento corrente
array_to_string(overlay_within('regions', name)) → una stringa come lista di nomi separati da virgole, per le regioni che contengono l'elemento corrente
overlay_within('regions', name)[0] → una stringa con il nome della regione che contengono l'elemento corrente
array_sort(overlay_within(layer:='regions', expression:="name", filter:= population > 10000)) → un array ordinato di nomi, per le regioni contenenti l'elemento corrente e con una popolazione superiore a 10000
overlay_within(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → un array di geometrie (in WKT), per un massimo di due regioni contenenti l'elemento corrente

Nota bene:

La funzione restituisce un output corretto anche se i due layer hanno EPSG differenti!


perimeter

Calcola il perimetro di un oggetto a geometria poligonale. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SR) di detta geometria, e l'unità di misura della lunghezza restituita è conforme all'unità di misura del SR. Ciò differisce dal calcolo eseguito dalla funzione $perimeter, la quale esegue calcoli ellissoidali basati sull'ellissoide del progetto e sulle impostazioni delle unità di misura della distanza.

Sintassi:

  • perimeter(geometry)

Argomenti:

  • geometry oggetto geometria poligono

Esempi:

perimeter(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))')) → 12.0


point_n

Restituisce un nodo specifico da una geometria.

Sintassi:

  • point_n(geometry, index)

Argomenti:

  • geometry oggetto geometria
  • index indice del nodo da restituire, dove 1 è il primo nodo; se il valore è negativo, l'indice del vertice selezionato sarà il suo conteggio totale meno il valore assoluto

Esempi:

geom_to_wkt(point_n(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))'),2)) → 'Point (4 0)'

--


Esempi correlati:

esempio nro 4 - Come aggiungere la quota Z alla tabella attributi


point_on_surface

Restituisce un punto garantendo che sia giacente sulla superficie della geometria.

Sintassi:

  • point_on_surface(geometry)

Argomenti:

  • geometry una geometria

Esempi:

point_on_surface($geometry) → una geometria punto

--


pole_of_inaccessibility

Calcola il polo dell'inaccessibilità approssimato per una superficie, che è il punto interno più distante dal contorno della superficie. Questa funzione usa l'algoritmo 'polylabel' (Vladimir Agafonkin, 2016), che è un approccio iterativo garantito per trovare il vero polo dell'inaccessibilità all'interno di una tolleranza specificata. Tolleranze più precise richiedono più iterazioni e sarà necessario più tempo per il calcolo.

Sintassi:

  • pole_of_inaccessibility(geometry, tolerance)

Argomenti:

  • geometry una geometria
  • tolerance distanza massima tra il punto restituito e la vera posizione del polo

Esempi:

geom_to_wkt(pole_of_inaccessibility( geom_from_wkt('POLYGON((0 1,0 9,3 10,3 3, 10 3, 10 1, 0 1))'), 0.1)) → 'Point(1.55, 1.55)'

--


project

Restituisce un punto proiettato da un punto di partenza usando una distanza e una direzione di immersione (azimut) in radianti.

Sintassi:

  • project(point, distance, azimuth[,elevation])

[ ] indica componenti opzionali

Argomenti:

  • point punto di partenza
  • point distanza da proiettare
  • azimuth azimuth in radianti in senso orario, dove 0 corrisponde a nord
  • elevation angolo di inclinazione in radianti

Esempi:

project(make_point(1, 2), 3, radians(270)) → Point(-2, 2)

--


relate

Testa la rappresentazione Dimensional Extended 9 Intersection Model (DE-9IM) della relazione tra due geometrie.

Variabile di relazione

Restituisce la rappresentazione Dimensional Extended 9 Intersection Model (DE-9IM) della relazione tra due geometrie.

Sintassi:

  • relate(geometry, geometry) )

Argomenti:

  • geometry una geometria
  • geometry una geometria

Esempi:

relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ) ) → 'FF1F00102'

Variabile di corrispondenza del modello

Testa se la relazione DE-9IM tra due geometrie corrisponde a un pattern specificato: restituisc true Vero, false Falso.

Sintassi:

  • relate( geometry, geometry, pattern)

Argomenti:

  • geometry una geometria
  • geometry una geometria
  • pattern Tratteggio DE-9IM da far corrispondere

Esempi:

relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ), '**1F001**' ) → Vero

Link utili:


reverse

Inverte il verso di una linestring invertendo l'ordine dei sui vertici.

Sintassi:

  • reverse(geometry)

Argomenti:

  • geometry una geometria

Esempi:

geom_to_wkt(reverse(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'LINESTRING(2 2, 1 1, 0 0)'

--


rotate

Restituisce una versione ruotata di una geometria. I calcoli si trovano nel sistema di riferimento spaziale di questa geometria.

Sintassi:

  • rotate( geometry, rotation[, center])

[ ] indica componenti opzionali

Argomenti:

  • geometry una geometria
  • rotation rotazione oraria in gradi
  • center punto centrale di rotazione. Se non specificato, viene utilizzato il centro del perimetro di delimitazione della geometria.

Esempi:

rotate($geometry, 45, make_point(4, 5)) → la geometria ruotava di 45 gradi in senso orario attorno al punto (4, 5)
rotate($geometry, 45) → la geometria ruotava di 45 gradi in senso orario attorno al centro del riquadro di delimitazione

screen


segments_to_lines

Restituisce una geometria multi linea consistente in una linea per ogni segmento nella geometria in ingresso.

Sintassi:

  • segments_to_lines( geometry)

Argomenti:

  • geometry oggetto geometria

Esempi:

geom_to_wkt(segments_to_lines(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'MultiLineString ((0 0, 1 1),(1 1, 2 2))'


shortest_line

Restituisce la linea più corta che unisce la geometria 1 alla geometria 2. La linea risultante partirà dalla geometria 1 e finirà nella geometria 2.

Sintassi:

  • shortest_line( geometry1, geometry2)

Argomenti:

  • geometry1 geometria dalla quale cercare la linea più corta
  • geometry2 geometria verso la quale cercare la linea più corta

Esempi:

geom_to_wkt(shortest_line(geom_from_wkt('LINESTRING (20 80, 98 190, 110 180, 50 75 )'),geom_from_wkt('POINT(100 100)'))) → LineString(73.0769 115.384, 100 100)

--

shortestline


simplify

Semplifica una geometria rimuovendo nodi usando una soglia basata sulla distanza (cioè, l'algoritmo Douglas Peucker). L'algoritmo mantiene grandi deviazioni nelle geometrie e riduce il numero di vertici in segmenti quasi rettilinei.

Sintassi:

  • simplify(simplify_vw(geometry, tolerance)

Argomenti:

  • geometry una geometria
  • tolerance deviazione massima dai segmenti rettilinei per i punti da rimuovere

Esempi:

geom_to_wkt(simplify(geometry:=geom_from_wkt('LineString(0 0, 5 0.1, 10 0)'),tolerance:=5)) → 'LineString(0 0, 10 0)'


simplify_vw

Semplifica una geometria rimuovendo nodi usando una soglia basata sull'area (cioè, l'algoritmo Visvalingam-Whyatt ). L'algoritmo rimuove i vertici che creano piccole aree nelle geometrie, ad esempio picchi stretti o segmenti quasi rettilinei.

Sintassi:

  • simplify_vw(geometry, tolerance)

Argomenti:

  • geometry una geometria
  • tolerance una misura dell'area massima creata da un nodo per il nodo da rimuovere

Esempi:

geom_from_wkt('LineString(0 0, 5 0, 5.01 10, 5.02 0, 10 0)'),tolerance:=5)) → 'LineString(0 0, 10 0)'

--


single_sided_buffer

Restituisce una geometria formata facendo un buffer solo da un lato di una geometria di tipo linestring. Le distanze sono espresse nel SR di tale geometria.

Sintassi:

  • single_sided_buffer( geometry, distance[, segments=8][, join=1][, miter_limit=2.0])

[ ] indica componenti opzionali

Argomenti:

  • geometry una geometria (multi)linestring
  • distance distanza di buffer. Valori positivi saranno bufferizzati a sinistra delle linee, valori negativi a destra
  • segments numero di segmenti da usare per rappresentare un quarto di cerchio quando è utilizzato uno stile di unione arrotondato. Un numero grande risulta in un buffer più morbido, con più nodi.
  • join stile di unione per gli angoli, dove 1 = arrotondato, 2 = seghettato e 3 = smussato
  • miter_limit limite sul rapporto di seghettatura usato per angoli molto appuntiti (solamente quando si usano le unioni seghettate)

Esempi:

single_sided_buffer($geometry, 10.5) → linea bufferizzata a sinistra di 10.5 unità
single_sided_buffer($geometry, -10.5) → linea bufferizzata a destra di 10.5 unità
single_sided_buffer($geometry, 10.5, segments:=16, join:=1) → linea bufferizzata a sinistra di 10.5 unità, usando più segmenti per risultare in un buffer più morbido
single_sided_buffer($geometry, 10.5, join:=3) → linea bufferizzata a sinistra di 10.5 unità, usando un'unione smussata

--


sinuosity

Restituisce la sinuosità di una curva che è il rapporto tra la lunghezza della curva e la distanza diretta (2D) tra i suoi punti iniziali e finali.

Sintassi

  • sinuosity(geometry)

Argomenti

  • geometry Curva in ingresso (circularstring, linestring)

Esempi

round(sinuosity(geom_from_wkt('LINESTRING(2 0, 2 2, 3 2, 3 3)')), 3) → 1.265
sinuosity(geom_from_wkt('LINESTRING( 3 1, 5 1)')) → 1.0


smooth

Smussa una geometria con l'aggiunta di ulteriori nodi che arrotondano gli angoli nella geometria.

Sintassi:

  • smooth( geometry, iterations=1, offset=0.25, min_length=1, max_angle=180)

Argomenti:

  • geometry una geometria
  • iterations Numero di iterazioni di smussatura da applicare. Valori più alti fanno risultare geometria più morbide, ma più complesse.
  • offset valore tra 0 e 0.5 che controlla quanto la geometria smussata segua strettamente la geometria originale. Valori più piccoli risultano in una lisciatura più stretta, valori più grandi risultano in una lisciatura più larga.
  • min_length lunghezza minima dei segmenti ai quali applicare la smussatura. Questo parametro può essere usato per evitare di posizionare nodi aggiuntivi eccessivi nei segmenti più corti della geometria.
  • max_angle angolo massimo (0-180) da applicare al nodo per la smussatura. Abbassando intenzionalmente l'angolo massimo si abbassa l'arrotondamento sugli angoli della geometria. Per esempio, un valore di 80 gradi preserverà l'angolo nella geometria.

Esempi:

geom_to_wkt(smooth(geometry:=geom_from_wkt('LineString(0 0, 5 0, 5 5)'),iterations:=1,offset:=0.2,min_length:=-1,max_angle:=180)) → 'LineString (0 0, 4 0, 5 1, 5 5)'


start_point

Restituisce il primo nodo di una geometria.

Sintassi:

  • start_point( geometry)

Argomenti:

  • geometry oggetto geometria

Esempi:

geom_to_wkt(start_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) → 'Point (4 0)'

Start_point di geometria poligonale:

Start_point di geometria lineare:


straight_distance_2d

Restituisce la distanza diretta/euclidea tra il primo e l'ultimo vertice di una geometria. La geometria deve essere una curva (circularstring, linestring).

Sintassi

  • straight_distance_2d(geometry)

Argomenti

  • geometry una geometria (circularstring, linestring)

Esempi

straight_distance_2d(geom_from_wkt('LINESTRING(1 0, 1 1)')) → 1
round(straight_distance_2d(geom_from_wkt('LINESTRING(1 4, 3 5, 5 0)')), 3) → 5.657


sym_difference

Restituisce una geometria che rappresenta la porzione di due geometrie che non si interseca.

Sintassi:

  • sym_difference( geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

geom_to_wkt( sym_difference( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 8 8)' ) ) ) → LINESTRING(5 5, 8 8)

Espressione

    -- differenza simmetrica tra le due linee
    sym_difference( 
    make_line(  -- linea a
        start_point(geometry(get_feature_by_id('linea_a',0))), 
        start_point($geometry),
        end_point(geometry(get_feature_by_id('linea_a',0)))),
    make_line(  -- linea b
        start_point($geometry), 
        end_point(geometry(get_feature_by_id('linea_a',0))),
        end_point($geometry))
                    )
    -- NB: -- l' ordine delle geometrie è indifferente

--


tapered_buffer

Crea un buffer lungo una geometria della linea in cui il diametro del buffer varia in modo uniforme sulla lunghezza della linea.

Sintassi:

  • tapered_buffer( geometry, start_width, end_width[,segments=8]_)

[ ] contrassegna componenti opzionali

Argomenti:

  • geometry input geometry. Deve essere una (multi) geometria della linea.
  • start_width larghezza del buffer all'inizio della linea,
  • end_width larghezza del buffer alla fine della riga.
  • segments numero di segmenti per approssimare le curve del quarto di cerchio nel buffer

Esempi:

tapered_buffer(geometry:=geom_from_wkt('LINESTRING(1 2, 4 2)'),start_width:=1,end_width:=2,segments:=8) → Un buffer rastremato che inizia con un diametro di 1 e termina con un diametro di 2 lungo la geometria della linea.

--

QGIS - feature


touches

Verifica se una geometria tocca un'altra. Restituisce vero (1) se le geometrie hanno almeno un punto in comune, ma i loro interni non si intersecano.

Sintassi:

  • touches( geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

touches( geom_from_wkt( 'LINESTRING(5 3, 4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → 1
touches( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(5 5)' ) ) → 0

Nota bene:

--

Osservazioni:

Usando algoritmo Seleziona per espressione presente in strumenti di processing oppure icona (Ctrl+F3):

touches(geometry(get_feature( 'province_rt_rt','pk_uid','46')),$geometry)

dove:

  • geometry1 è geometry(get_feature( 'province_rt_rt','pk_uid','52'))
  • geometry2 è $geometry

seleziono tutti i comuni touches (toccati) dalla provincia con pk_uid46 (Siena)

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli toccati dalla provincia di Siena).

NOT touches(geometry(get_feature( 'province_rt_rt','pk_uid','52')),$geometry)


transform

Restituisce la geometria trasformata da un SR sorgente ad un SR di destinazione.

Sintassi:

  • transform( geometry, source_auth_id, dest_auth_id)

Argomenti:

  • geometry una geometria
  • source_auth_id ID del SR sorgente
  • dest_auth_id ID del SR destinazione

Esempi:

geom_to_wkt( transform( $geometry, 'EPSG:2154', 'EPSG:4326' ) ) → POINT(0 51)

--


translate

Restituisce una versione traslata di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • translate( geometry, dx, dy)

Argomenti:

  • geometry una geometria
  • dx delta x
  • geomdyetry delta y

Esempi:

translate($geometry, 5, 10) → una geometria dello stesso tipo come l'originale

--


union

Restituisce una geometria che rappresenta l'insieme dei punti dell'unione delle geometrie.

Sintassi:

  • union( geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

geom_to_wkt( union( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(5 5)' ) ) ) → MULTIPOINT(4 4, 5 5)

Espressione

    -- unione delle due linee
    union( 
    make_line(  -- linea a
        start_point(geometry(get_feature_by_id('linea_a',0))), 
        start_point($geometry),
        end_point(geometry(get_feature_by_id('linea_a',0)))),
    make_line(  -- linea b
        start_point($geometry), 
        end_point(geometry(get_feature_by_id('linea_a',0))),
        end_point($geometry))
                    )
    -- NB: -- l' ordine delle geometrie è indifferente

--


wedge_buffer

Restituisce un buffer a forma di cuneo che origina da una geometria del punto.

Sintassi:

  • wedge_buffer( geometry, azimuth, width, outer_radius[,inner_radius=0.0])

[ ] contrassegna componenti opzionali

Argomenti:

  • geometry punto centrale (origine) del buffer. Deve essere una geometria puntuale.
  • azimuth (in gradi) per il centro del cuneo da puntare.
  • width buffer w larghezza (in gradi). Si noti che il cuneo si estenderà fino a metà della larghezza angolare su entrambi i lati della direzione dell'azimut.
  • outer_radius raggio esterno per i buffers
  • inner_radius raggio interno opzionale per i buffers

Esempi:

wedge_buffer(center:=geom_from_wkt('POINT(1 2)'),azimuth:=90,width:=180,outer_radius:=1) → Un buffer a forma di cuneo centrato sul punto (1,2), rivolto verso est, con una larghezza di 180 gradi e raggio esterno di 1.

--


within

Controlla qualora una geometria sia interna ad un'altra. Restituisce 1 (vero) se la geometria a è completamente contenuta nella_ geometria b_.

Sintassi:

  • within( geometry1, geometry2)

Argomenti:

  • geometry1 una geometria
  • geometry2 una geometria

Esempi:

within( geom_from_wkt( 'POINT( 0.5 0.5)' ), geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ) ) → 1
within( geom_from_wkt( 'POINT( 5 5 )' ), geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0 ))' ) ) → 0

Osservazioni:

Usando algoritmo `Seleziona per espressione` presente in strumenti di processing oppure ![icona](https://docs.qgis.org/2.18/en/_images/mIconExpressionSelect.png) (Ctrl+F3):

- within($geometry,geometry(get_feature( 'province_rt_rt','pk_uid','53'))) dove:

  • geometry1 è $geometry
  • geometry2 è geometry(get_feature( 'province_rt_rt','pk_uid','53'))

seleziono tutti i comuni within (contenuti) nella provincia con pk_uid53 (Grosseto)

PS:** potrei anche negare (NOT) l'espressione per selezionare il complementare (tutti i comuni tranne quelli contenuti nella provincia di Grosseto).

NOT within($geometry,geometry(get_feature( 'province_rt_rt','pk_uid','53')))

Altro esempio con condizione sulle etichette

Espressione

    CASE WHEN within( $geometry,
    geometry(get_feature('poligono','id',1))) = 1
    THEN 'INTERNO'
    ELSE 'NON INTERNO'
    END


x

Restituisce la minima coordinata x di una geometria punto, o la coordinata x del centroide di una geometria non puntuale.

Sintassi:

  • x( geometry)

Argomenti:

  • geometry una geometria

Esempi:

x( geom_from_wkt( 'POINT(2 5)' ) ) → 2
x( $geometry ) → coordinata x del centroide dell'elemento corrente

--


x_max

Restituisce la coordinata x massima di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • x_max( geometry)

Argomenti:

  • geometry una geometria

Esempi:

x_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 4

--


x_min

Restituisce la coordinata x minima di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • x_min( geometry)

Argomenti:

  • geometry una geometria

Esempi:

x_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 2

--


y

Restituisce la coordinata y minima di una geometria puntuale, o la coordinata y del centroide di una geometria non puntuale.

Sintassi:

  • y( geometry)

Argomenti:

  • geometry una geometria

Esempi:

y( geom_from_wkt( 'POINT(2 5)' ) ) → 5
y( $geometry ) → coordinata y del centroide dell'elemento corrente

--


y_max

Restituisce la coordinata y massima di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • y_max( geometry)

Argomenti:

  • geometry una geometria

Esempi:

y_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 8

--


y_min

Restituisce la coordinata y minima di una geometria. I calcoli sono effettuati nel sistema di riferimento spaziale di tale geometria.

Sintassi:

  • y_min( geometry)

Argomenti:

  • geometry una geometria

Esempi:

y_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 5

--


z

Restituisce la coordinata z di una geometria puntuale.

Sintassi:

  • z( geometry)

Argomenti:

  • geometry una geometria punto

Esempi:

z( geom_from_wkt( 'POINTZ(2 5 7)' ) ) → 7


$z

Restituisce il valore z del punto corrente se è 3D. Se la feature è una feature multipunto, verrà restituito il valore z del primo punto.

Sintassi

  • $z

Esempi

$z → 123


z_max

Restituisce la coordinata z massima di una geometria.

Sintassi:

  • z_max( geometry)

Argomenti:

  • geometry una geometria con z coordinata

Esempi:

z_max( geom_from_wkt( 'POINT ( 0 0 1 )' ) ) → 1
z_max( geom_from_wkt( 'MULTIPOINT ( 0 0 1 , 1 1 3 )' ) ) → 3
z_max( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) ) → 0
z_max( geom_from_wkt( 'LINESTRING( 0 0 0, 1 0 2, 1 1 -1 )' ) ) → 2
z_max( geom_from_wkt( 'POINT ( 0 0 )' ) ) → NULL


z_min

Restituisce la coordinata z minima di una geometria.

Sintassi:

  • z_min( geometry)

Argomenti:

  • geometry una geometria con z coordinata

Esempi:

z_min( geom_from_wkt( 'POINT ( 0 0 1 )' ) ) → 1
z_min( geom_from_wkt( 'MULTIPOINT ( 0 0 1 , 1 1 3 )' ) ) → 1
z_min( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) ) → -2
z_min( geom_from_wkt( 'LINESTRING( 0 0 0, 1 0 2, 1 1 -1 )' ) ) → -1
z_min( geom_from_wkt( 'POINT ( 0 0 )' ) ) → NULL


Back to top