[Gvsig_italian] Calcolo distanza tra i vertici di un poligono

Antonio Falciano afalciano a yahoo.it
Mar 15 Dic 2009 07:40:33 PST


Il 15/12/2009 15.57, enricofiore a libero.it ha scritto:
> Ciao, 
> scusa se insisto con queste cose, ma lavorandoci sopra mi sono accorto 
> di alcuni "problemi".
> 
> 1) sono arrivato a calcolare l'area dei cerchi 
> utlizzando il comando area(), che però risulta avere valori negativi, come Ú 
> possibile? (Il campo Area da me crato Ú impostato come Double)
> Ho fatto lo 
> stesso il calcolo del diametro, ponendo il segno negativo davanti ad area(), 
> come segue
>                                         2*sqrt(-area()/pi())
> il 
> diametro risultante Ú corretto, almeno misurando manualmente il diametro di 
> alcuni cerchi

Ciao Enrico,
il segno dell'area e' dovuto al verso di percorrenza del cerchio (che in
realta' e' approssimato da un poligono). Si tratta di un problema noto
di cui si e' discusso recentemente anche in lista internazionale [1].

> 2) Inoltre nella creazione del minimo cerchio circoscritto, 
> Sextante assegna ad ogni cerchio creato lo stesso valore di ID, tutti i file .
> shp hanno come attributo ID = 1. E quindi poi non riesco a  fare il Join tra le 
> due tabelle. ma anche questo non Ú un problema ai fini dei miei calcoli, ma 
> potrebbe esserlo per altri utilizzi.

Scusa, premesso che eventuali ambiguita' nella denominazione dei campi
sono da evitare e che Sextante a quanto pare non ci aiuta ancora in tal
senso, ma non dovresti avere a disposizione anche il campo ID dei
poligoni di partenza?
In ogni caso, i bug che condizionavano la fattibilita' dell'intera
procedura sono fortunatamente in via di risoluzione e quindi quanto
prima sara' disponibile una nuova versione di Sextante perfettamente
adatta al tuo scopo.

> Grazie ancora per l'aiuto

di nulla, figurati!

> Segnalo alcune piccole variazioni che ho effettuato, per fare alcune 
> prove (forse possono tornare utili):
> 
> 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):
> 
> for /L %% i in (1,1,70) do ogr2ogr -where "ID=%%i" CodISTAT_%%i.
> shp 001047V.shp

ok, addirittura avresti potuto passare direttamente solo il codice ISTAT
come nome dello shp e poi realizzare il ciclo sulla lista dei codici
(cfr. discussioni precedenti). Cosi' facendo, eviteresti anche
l'ambiguita' sul nome dei campi!

> Ho fatto anche alcune piccole modifiche allo script da 
> utilizzare con BeanShell, l'originale era:
> 
> n=100; // numero di poligoni (e di 
> layer)
> for (i=0; i<n; i++)
>     runalg("minimumenclosingpolygon", i + ".shp", 
> "0", "1", "false", "#");
> 
> 
> 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;

ok

> 2) dato che il nome 
> del file di input Ú composto da "codice ISTAT _ n°", ho modificato l'ultima 
> riga in modo che
> prendesse i file così nominati;
> 
> 3) al posto del "#"  ho 
> inserito il percorso dove salvare il file e aggiungendo il contatore (+ i) in 
> modo che numerasse
> anche gli output:
> 
> l'ultima riga risulta così modificata: 
> 
> runalg ("minimumenclosingpolygon", "codice_" + i + ".shp", "0", "1", "false", 
> "C:/Dati/nomefile_" + i)

Benissimo! Sono contento che la tua procedura sia comunque andata a buon
fine e che abbia fornito diversi feedback utili alla lista. :)

ciao
Antonio

[1]
http://listserv.gva.es/pipermail/gvsig_internacional/2009-November/004199.html

-- 
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano



More information about the Gvsig_italian mailing list