<div dir="ltr"><div class="gmail_default" style="font-family:garamond,serif;font-size:large">Buongiorno,<br>confermo tutto.</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">Ho fatto i test consigliati e ho usato il gpkg condiviso.</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large"><br></div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">Aggiungo altre osservazioni:</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">1. dove è scritto nella documentazione che overlay_nearest() utilizzato con lo stesso layer ha quel comportamento? (ovvero salta i casi banali);</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">2. come mai l'opzione limit:=-1 non ha effetto se il layer è lo stesso?</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large"><br></div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">grazie per la segnalazione</div><div class="gmail_default" style="font-family:garamond,serif;font-size:large"><br></div><div class="gmail_default" style="font-family:garamond,serif;font-size:large">saluti</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno gio 3 feb 2022 alle ore 20:23 Andrea Giudiceandrea <<a href="mailto:andreaerdna@libero.it" target="_blank">andreaerdna@libero.it</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    Salve a tutti,<br>
    rispondendo ad un quesito di un utente della mailing list qgis-user
    qualche giorno fa, mi sono accorto che si riscontrano dei bug usando
    la
    funzione overlay_nearest sullo stesso layer.<br>
    <br>
    La funzione, usata su uno stesso layer, per esempio, di punti,
    dovrebbe trovare, per
    ogni punto del layer, il punto più vicino appartenente allo stesso
    layer.<br>
    Chiaramente il punto più vicino appartenente allo stesso layer è il
    punto stesso, ma il codice è fatto in modo che in questo caso venga
    escluso il punto stesso (che sarebbe un risultato banale) e si
    cerchi il
    secondo punto più vicino nello stesso layer.<br>
    <br>
    overlay_nearest funziona effettivamente così per layer in formato,
    per
    esempio, Memory, GeoPackage o Spatialite.<br>
    <br>
    Invece, per layer, per esempio, in formato Shapefile, GeoJSON o
    FlatGeobuf, io riscontro che la funzione restituisce sempre il punto
    stesso invece che il secondo punto più vicino.<br>
    <br>
    Per fare una semplice verifica:<br>
    <br>
    - crea un nuovo Memory layer di tipo geometrico Point in un progetto
    vuoto<br>
    - aggiungi un singolo punto al layer, salva la modifica e chiudi
    l'editazione<br>
    - usa l'espressione overlay_nearest(@layer,$geometry) nel
    calcolatore di
    campi per tale layer: l'anteprima mostra il valore [] (cioè,
    correttamente, un array vuoto)<br>
    <br>
    - esporta il Memory layer in un layer in formato Shapefile e
    aggiungi
    tale layer Shapefile al progetto<br>
    - usa la stessa espressione nel calcolatore di campi per tale layer
    Shapefile: l'anteprima mostra il valore [ <geometry: Point> ]
    (cioè l'espressione restituisce erroneamente lo stesso unico punto
    presente nel layer)<br>
    <br>
    - esporta il Memory layer in un layer in formato GeoPackage o
    Spatialite
    e aggiungi tale layer al progetto<br>
    - usa la stessa espressione nel calcolatore di campi per tale layer
    GeoPackage o Spatialite: l'anteprima mostra il valore [] (cioè,
    correttamente, un array vuoto)<br>
    <br>
    <br>
    Inoltre, sempre applicando la funzione sullo stesso layer, anche con
    layer in formato Memory, GeoPackage o Spatialite, riscontro un altro
    bug.<br>
    <br>
    Creando un nuovo layer di tipo geometrico Point in formato Memory,
    GeoPackage o Spatialite e inserendo un certo numero di punti, tutto
    funziona come dovrebbe e l'espressione
    overlay_nearest(@layer,$geometry)
    restituisce correttamente il secondo punto più vicino.<br>
    <br>
    Se però elimino uno dei punti dal layer, allora, per tutti i punti a
    partire da quello successivo a quello eliminato, la funzione
    restituisce
    erroneamente il punto stesso invece che il secondo punto più vicino.<br>
    <br>
    Mi sembra strano che nessun altro se ne sia ancora accorto (non ho
    trovato bug report a riguardo e la funzione esiste ormai da più di
    un
    paio di anni) e quindi sono un po' in dubbio sulla reale esistenza
    di
    questi due bug...<br>
    <br>
    Per verificare questo bug, metto a disposizione un piccolo file
    GeoPackage
    <a href="https://drive.google.com/file/d/195J1kph3v8q_Db2TVDXm-RMYpkaI2ES5" target="_blank">https://drive.google.com/file/d/195J1kph3v8q_Db2TVDXm-RMYpkaI2ES5</a><br>
    <br>
    Il layer contiene sette punti, con un campo ID testuale progressivo
    da 1
    a 7.<br>
    <br>
    Creando un campo virtuale testuale (ID_near) con il calcolatore di
    campi
    e l'espressione overlay_nearest(@layer, ID)[0] si dovrebbero
    ottenere i
    seguenti valori:<br>
    <br>
    <table border="1">
      <tbody>
        <tr>
          <td>ID</td>
          <td>ID_near<br>
          </td>
        </tr>
        <tr>
          <td>1</td>
          <td>3</td>
        </tr>
        <tr>
          <td>2</td>
          <td>5</td>
        </tr>
        <tr>
          <td>3</td>
          <td>7</td>
        </tr>
        <tr>
          <td>4</td>
          <td>2</td>
        </tr>
        <tr>
          <td>5</td>
          <td>2</td>
        </tr>
        <tr>
          <td>6</td>
          <td>3</td>
        </tr>
        <tr>
          <td>7</td>
          <td>3<br>
          </td>
        </tr>
      </tbody>
    </table>
    <br>
    <br>
    Se però, per esempio, elimino il punto con ID 4, la tabella diventa
    erroneamente:<br>
    <br>
    <table border="1">
      <tbody>
        <tr>
          <td>ID</td>
          <td>ID_near</td>
        </tr>
        <tr>
          <td>1</td>
          <td>3</td>
        </tr>
        <tr>
          <td>2</td>
          <td>5</td>
        </tr>
        <tr>
          <td>3</td>
          <td>7</td>
        </tr>
        <tr>
          <td>5</td>
          <td>5</td>
        </tr>
        <tr>
          <td>6</td>
          <td>6</td>
        </tr>
        <tr>
          <td>7</td>
          <td>7</td>
        </tr>
      </tbody>
    </table>
    <br>
    cioè i valori del campo virtuale per i punti con ID da 1 a 3 sono
    corretti, mentre per i punti con ID da 5 a 7 sono errati (riportano
    lo stesso ID del punto).<br>
    <br>
    <br>
    Riscontro il problema con QGIS 3.16.0 (prima versione in cui è
    presente overlay_nearest), 3.16.16 e 3.22.3.<br>
    <br>
    <br>
    Spero qualcuno possa smentirmi... ma le conferme sono apprezzate
    ugualmente :-)<br>
    <br>
    A presto.<br>
    <br>
    Andrea<br>
  </div>

_______________________________________________<br>
QGIS-it-user mailing list<br>
<a href="mailto:QGIS-it-user@lists.osgeo.org" target="_blank">QGIS-it-user@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/qgis-it-user" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-it-user</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><font size="2"><font face="garamond, serif"><b>Ing. Salvatore Fiandaca</b><br><b>mobile</b>.:+39 327.493.8955 <br><b>m</b>: <b><a href="mailto:pigrecoinfinito@gmail.com" target="_blank">pig<span></span><span></span>recoinfinito@gmail.com</a></b></font></font></div><div><font face="garamond, serif" size="2"><b>C.F</b>.: FNDSVT71E29Z103G</font></div><div><font face="garamond, serif" size="2"><b>P.IVA</b>: 06597870820</font></div><div><font face="garamond, serif" size="2"><b>membro QGIS Italia - <a href="http://qgis.it/" target="_blank">http://qgis.it/</a></b><br><b>socio GFOSS.it - </b><a href="http://gfoss.it/" style="font-weight:bold" target="_blank">http://gfoss.it/</a></font></div><div><font face="garamond, serif" size="2"><b>blog:</b><b><a href="https://pigrecoinfinito.com/" target="_blank"> https://pigrecoinfinito.com/</a> <br>FB: Co-admin - <a href="https://www.facebook.com/qgis.it/" target="_blank">https://www.facebook.com/qgis.it/</a></b></font><b style="font-family:garamond,serif;font-size:small"><a href="https://www.facebook.com/qgis.it/" target="_blank"> </a> </b></div><div><b style="font-family:garamond,serif;font-size:small">TW:<a href="http://goog_95411464" target="_blank"> </a></b><font face="garamond, serif" size="2"><b><a href="https://twitter.com/totofiandaca" target="_blank">https://twitter.com/totofiandaca</a></b></font></div><div><font face="garamond, serif" size="2"><br></font></div><div dir="ltr"><font face="garamond, serif"><font size="2">43°51'0.54"N  10°34'27.62"E - EPSG:4326</font></font></div><div dir="ltr"><font face="garamond, serif"><font size="2"><br></font></font></div><div dir="ltr"><font face="garamond, serif"><font size="2">“Se la conoscenza deve essere aperta a tutti,</font></font></div><div dir="ltr"><font face="garamond, serif"><font size="2">perchè mai limitarne l’accesso?” </font></font></div><div dir="ltr"><font face="garamond, serif"><font size="2">R. Stallman<br><br></font></font><span style="font-family:"Trebuchet MS";font-size:10px">Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E' vietata qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso di </span><span style="font-family:"Trebuchet MS";font-size:10px">FIANDACA SALVATORE</span><span style="font-family:"Trebuchet MS";font-size:10px">.</span><span style="font-family:"Trebuchet MS";font-size:10px"> Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.<br></span><font face="garamond, serif"><font size="2"><br><br></font></font></div><div dir="ltr"><font face="garamond, serif"><font size="2"></font></font></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>