<p>Ciao,<br />ho utilizzato il primo metodo metodo da te suggerito ed è andato tutto a buon fine.<br />Grazie dell'aiuto.<br /><br />Segnalo solo alcune piccole variazioni che ho effettuato, per fare alcune prove (forse possono tornare utili):<br /><br />nel file batch [1] ho fatto in modo che oltre a numerare i file .shp in output, gli assegnasse un prefisso (es: codice ISTAT del comune di riferimento):<br /><br />for /L %% i in (1,1,70) do ogr2ogr -where "ID=%%i" CodISTAT_%%i.shp 001047V.shp<br /><br />Ho fatto anche alcune piccole modifiche allo script da utilizzare con BeanShell, l'originale era:<br /><br />n=100; // numero di poligoni (e di layer)<br />for (i=0; i<n; i++)<br />    runalg("minimumenclosingpolygon", i + ".shp", "0", "1", "false", "#");<br /><br /><br />1) ho impostato i=1 e i<=n; dato che la numerazione dei file partiva da 1 e per non perdermi un file di output;<br />2) dato che il nome del file di input è composto da "codice ISTAT _ n°", ho modificato l'ultima riga in modo che<br />prendesse i file così nominati;<br />2) al posto del "#"  ho inserito il percorso dove salvare il file e aggiungendo il contatore (+ i) in modo che numerasse<br />anche gli output:<br /><br />l'ultima riga risulta così modificata:<br /><br />runalg ("minimumenclosingpolygon", "codice_" + i + ".shp", "0", "1", "false", "C:/Dati/nomefile_" + i)<br /><br />[1] https://gvsig.org/lists/pipermail/gvsig_italian/2009-November/000941.html</p>
<p> </p>
<p> </p>
<p> </p>
<p>----Messaggio originale----<br />Da: afalciano@yahoo.it<br />Data: 04/12/2009 23.11<br />A: "enricofiore@libero.it"<enricofiore@libero.it>, "Lista di distribuzione in lingua italiana orientata sia agli utenti che agli sviluppatori"<gvsig_italian@lists.gvsig.org><br />Ogg: Re: [Gvsig_italian] Calcolo distanza tra i vertici di un poligono<br /><br />enricofiore@libero.it ha scritto:<br />> Ciao,<br />> ho fatto alcune prove utilizzando i passaggi suggeriti:<br />> 1) creo file di punti --> Nella tabella attributi è presente il campo<br />> "Object" che identifica con un codice il poligono a cui essi appartengono<br />> 2) calcolo della minima circonferenza circoscritta. E qui ho avuto dei<br />> problemi.<br />> Se cerco di fare disegnare un cerchio per ogni poligono presente nel<br />> piano, selezionando lo shape file di punti, il campo Object della<br />> tabella dello shape e spuntando l'opzione "Create one polygon for each<br />> class" , il comando mi restituisce uno shape file vuoto. Se invece<br />> seleziono i punti appartenenti ad un singolo poligono, il cerchio viene<br />> creato.<br />> <br />> Sbaglio qualcosa o non è possibile fare disegnare i cerchi per tutti i<br />> poligoni presenti nello shape file in un unico passaggio?<br />> <br />> Spero di essermi spiegato bene<br /><br />Ti sei spiegato bene: purtroppo il tool e' bacato (inserito oggi nel bug<br />tracker), non dipende da te. Nel frattempo, un modo per aggirare i vari<br />bug e risolvere comunque il problema consiste nel mettere a sistema<br />questo recente post [1] con l'approccio della circonferenza minima<br />circoscritta, anche se l'intera procedura diventa un po' piu' articolata.<br />Nel dettaglio, ripartendo dall'inizio:<br />1) definisci un campo ID intero univoco nella tabella degli attributi<br />associata al layer dei poligoni;<br />2) estrai i vertici dal layer dei poligoni ed esporta come shp;<br />3) definisci un batch script per separare i vertici di ogni poligono [1]<br />con ogr2ogr (v. esempio 1) ed eseguilo nella stessa cartella contenente<br />lo shp dei vertici, otterrai n shp contenenti i vertici di ciascun poligono;<br />4) tramite la console di Beanshell (linguaggio scripting di Sextante)<br />calcola in maniera iterativa la circonferenza minima circoscritta ad<br />ogni poligono (v. piu' in basso);<br />5) esegui il merge di tutte le circonferenze in un unico shp;<br />6) definisci e calcola un campo dei diametri come 2*sqrt(area()/pi());<br />7) esegui l'unione (join) tra la tabella degli attributi dei poligoni<br />iniziali e quella del layer delle circonferenze utilizzando l'ID dei<br />poligoni, come campo in comune;<br />8) esporta il layer precedentemente ottenuto;<br />9) puoi calcolare finalmente l'UFI!<br /><br />######<br />Con riferimento al punto 4), se i poligoni separati sono contenuti in<br />{0,1,2,...,n}.shp ti bastera' adattare al tuo caso le seguenti<br />istruzioni, sostituendo il numero dei poligoni:<br /><br />n=100; // numero di poligoni (e di layer)<br />for (i=0; i<n; i++)<br />    runalg("minimumenclosingpolygon", i + ".shp", "0", "1", "false", "#");<br /><br />... e compariranno a raffica tutte le circonferenze desiderate!<br />######<br /><br />Ho provato velocemente l'intera procedura e posso assicurarti che<br />va a buon fine. Si tratta di un bel esercizio, molto utile a livello<br />didattico (...e non solo!), che spinge ad utilizzare la riga di comando<br />di Sextante. Buon lavoro!<br /><br />ciao<br />Antonio<br /><br />[1]<br />https://gvsig.org/lists/pipermail/gvsig_italian/2009-November/000941.html<br /><br />-- <br />Antonio Falciano<br />http://www.linkedin.com/in/antoniofalciano<br /><br /><br /><br /><br /></p>