Selezionare 'n' punti più vicini ad un punto selezionato↵
Supponiamo di avere un layer di punti e di voler selezionare i primi 10 punti più vicini ad un punto selezionato arbitrariamente. Questo esempio prende spunto da questa domanda posta su StackExchange.
Usando solo le espressioni di QGIS e Select by Expression
, l'espressione da usare è:
/*Select the first 'n' points closest to the selected point*/
-- fid selection
with_variable ('selected_fid',
array_find(
array_agg(geom_to_wkt($geometry,6)),
array_agg(geom_to_wkt($geometry,6), filter:=is_selected())[0]),
-- selection circle
with_variable ('circle',
make_circle (
$geometry,
aggregate(
layer:=@layer_name,
aggregate:='array_agg',
expression:=
array_max(array_foreach (
overlay_nearest (@layer_name, $geometry,limit:=10),
distance($geometry,@element))))[@selected_fid]),
-- verify
intersects (@circle,array_agg($geometry)[@selected_fid]))
)
NB: il valore del parametro limit:=
in questo caso specifico, dipende dal provider utilizzato:
- per
shapefile
($id inizia da 0) utilizzarelimit:=valore +1
- per
geopackage
($id inizia da 1) utilizzarelimit:=valore
Funzioni e variabili utilizzate: