Risoluzione spaziale dataset

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
29 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Andrea Peri
Tieni presente che ci sono dei numeri che in FP64 non sono esprimibili con un numero FINITO di cifre.

Ad esempio il valore 0.1
e quindi anche 0.01 0.001 0.00001 etc...
puo' sembrare strano , ma non è espirmiile con un numero finito di cifre e quindi se lo memorizzi in una variabile Double e poi lo vai a rileggere ti ritorna con tutte e 17 le cifre decimali.
E non è l'unico.
Lo snaptogrid
non puo' bypassare il formato binario e quindi se deve esprimire un numero che in binario non si esprime deve per forza approssimarlo.

A.

On 16/01/2014 10:18, Giuseppe Patti wrote:
E infatti io avrei usato ST_SnapToGrid, però se poi vado a chiedere la geometria del poligono dopo lo snap mi tornano fuori le 17 cifre. Sbaglio io qualcosa o capisco male il funzionamento di ST_SnapToGrid?


On 16/01/2014 09:22, Andrea Peri wrote:
Aggiungo un dettaglio che forse non è trascurabile.

A parte la specifica utente:
snappare su griglia prefissata.

Se l'obiettivo vero è riprodurre la griglia del noto software commerciale.
Occorre stare molto attenti. Perche' la griglia cambia in base al box di imiego definito per il dataset.
E il processo è irreversibile.
Ovvero lo snap che egli effettua non è dinamico ma statico  al momento del caricamento.
Dopodiche' resta quello.
Se poi si sposta l'archivio su altra piattaforma lo snap puo' ulteriormente cambiare.
Se poi si passa su uno shapefile, lo snap cambia ulteriormente perche' a quel punto interviene la griglia dell' FP64
E cosi' via.
Per cui non è facile stabilire la griglia esatta da usare.
Occorrerebbe tracciare tutti i passaggi pregressi.

Evito di partire con il solito pistolotto alla luna che sarebbe utile che queste cose venissero riportate nel lineage di una eventuale scheda di metadato , perche' serve proprio a profilare questo genere di situazioni. La specifica nazionale prevede altre metodiche che non incoraggiano  questo tipo di informazione e quindi lascio perdere pure io.


A.



Il giorno 16 gennaio 2014 09:03, Andrea Peri <[hidden email]> ha scritto:
Se la griglia è regolare.
Prendi spatialite, con esso ti fai generare un dataset che è una griglia rettangolare che parte da una coordinata che gli dici te e che ha un delta pari all'incremento.
Poi carichi tale dataset su qgis e forzi lo snap di tutti gli altri dataset su di esso.

Oppure altra opzione:
sempre in spatialite:

carici hi il dtaaset che devi portare su tale griglie e poi lanci:

update tabella set geometry = ST_SnapToGrid(.....)

dove li' dentro ci scrivi punto di partenza e delta.

Dovrebbe funzionare.

Io ho usato una strategia simile per troncare (brutta parola, ma è per tagliare corto) i dati del nostro DBT ristrutturato su due cifre decimali.

A.



Il giorno 16 gennaio 2014 08:52, Giuseppe Patti <[hidden email]> ha scritto:

Mettiamola così allora: un cliente vi commissiona un dataset vettoriale in cui i vertici delle geometrie devono essere precisamente posizionati su una griglia a spaziatura omogenea XY pari a 1e^-7, eventuali cifre dopo la settima decimale devono essere al limite pari a zero, eventuali geometrie che in seguito ad operazioni di processing dovessero risultare con coordinate differenti devono essere ricondotte al caso precedente.

Come risolveremmo il problema con strumenti GFoss?



---------- Messaggio inoltrato ----------
From: "G. Allegri" <[hidden email]>
To: Andrea Peri <[hidden email]>
Cc: gfoss <[hidden email]>
Date: Wed, 15 Jan 2014 20:06:25 +0100
Subject: Re: [Gfoss] Risoluzione spaziale dataset

Il problema degli arrotondamenti investe qualsiasi problema geometrico computazionale. Ci sono librerie come le CGAL in grado di lavorare con precisione arbitraria, ma la maggior parte dei software implementa le proprie strategie per gestire i problemi del floating point. Non so se la "portabilità della precisione" sia un problema risolvibile, certamente i software che sfruttano librerie geometriche comuni (vedi GEOS) possono sfruttarne la trasparenza per gestire la cosa, ad es. tramite il Precision Model (usato ad es. dallo SnapToGrid di PostGIS).

Mi sembra comunque che le questioni sono due:

1) come viene rappresentata una coordinata nel formato dati scelto

2) come viene gestita dal software

Il primo credo non sia un problema, visti i tanti mezzi che ci sono (dallo shapefile a PostGIS, ecc.) . Il secondo... bhè, finché un sw è chiuso c'è poco da discutere.

giovanni

Il 15/gen/2014 19:34 "aperi2007" <[hidden email]> ha scritto:
Diciamo che tra parecch softwares si spostano in maniera trasparente.

Un discorso a parte è il noto software commerciale , il quale

UNICO AL MONDO adotta una riclassificazione in "quanti" della coordinata.

Poiche' lui adotta un meccanismo che non trova riscontro in nessun altro software.
Difficile che con altri software si riesca a riprodurre la sua coordinata.
Oltre tutto , se prendi due PC con il medesimo software commerciale, non è assolutamente detto che quando sposti da uno all'altro la coordinata ti rimane invariata.
Dipende da quali altri dataset sono caricati nel medesimo DB di partenza o di destinazione.

A.


On 15/01/2014 18:29, Giuseppe Patti wrote:
Sono d'accordo, ma questo è un altro aspetto del problema. Rimane il nocciolo: se io devo spostare degli shape da un sw ad un altro, è possibile garantire la consistenza delle coordinate? Non penso sia un problema peregrino, ho trovato discussioni analoghe con soluzioni "esoteriche" anche qui:

http://gis.stackexchange.com/questions/68636/spatial-precision-for-editing-in-multiple-gis-clients

http://gis.stackexchange.com/questions/76939/qgis-polygon-precision


Il giorno 15 gennaio 2014 18:01, Andrea Peri <[hidden email]> ha scritto:
Il noto software commerciale permette di impostare la XY resolution , ma all'aumentare della resolution diminuisce la BBOX ammessa.
E viceversa.

Per cui ti crea un bel problema anche lui. Perche' ovviamente o ammetti una resolution veramente bassa (leggi scarsa) oppure non riesci a spostare il dataset su basi dati di lvello nazionale anziche' locale.




Il giorno 15 gennaio 2014 17:44, Giuseppe Patti <[hidden email]> ha scritto:
Ciao. Vorrei approfondire con voi la questione della risoluzione spaziale di dati vettoriali nella quale sono incappato.
In particolare mi riferisco alla precisione delle coordinate ad es. di uno shape, che continuano a variare passando da un software all'altro. In quale modo, anche appoggiandosi ad un DB, sarebbe possibile essere sicuri di avere coordinate di precisione nota e costante settando il numero di cifre decimali alle quali arrotondare? Ad esempio un noto sw commerciale fa impostare i valori di XY_resolution e XY_tolerance creando un file geodatabase, sarebbe interessante capire se esiste la possibilità di raggiungere lo stesso risultato anche con GFOSS.

Saluti

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013





_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Andrea Peri
In reply to this post by pcav
Cosi' risolvi solo il problema della rappresentazione a video.
Nel momento in cui lo memorizzi in una variabile double ritorna ad avere
17 cifre decimali.
La memorizzazione con il numero di cifre voluto come ipotizzato è
realizzabile solo con se si implementano variabili che memorizzano in
BCD oppure in forma testuale il valore.

A.

On 16/01/2014 10:32, Paolo Cavallini wrote:
> Il 16/01/2014 10:18, Giuseppe Patti ha scritto:
>> E infatti io avrei usato ST_SnapToGrid, però se poi vado a chiedere la
>> geometria del poligono dopo lo snap mi tornano fuori le 17 cifre.
>> Sbaglio io qualcosa o capisco male il funzionamento di ST_SnapToGrid?
> Forse sarebbe piu' semplice scrivere un comando che consenta
> l'arrotondamento a piacere (l'utente sceglie il N di cifre decimali da
> mantenere).
> Che ne dite?
> Saluti.

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Giuliano Curti
In reply to this post by Giuseppe Patti
Il giorno Thu, 16 Jan 2014 14:58:18 +0100
Giuseppe Patti <[hidden email]> ha scritto:

ciao Giuseppe,


> Mi permetto di fare un po' di sintesi.
>
> Giuliano (in Cc) si offre come donatore di codice e sviluppatore.

sì, certo :-) con la (solita) precisazione che sono uno "sviluppatore
domenicale";

se ho capito bene il thread (e mi viene qualche dubbio perchè ho sentito
parlare di Precision Model che, ahimè :-( non so dove stia di casa,
forse ho qualche riga di codice che opportunamente adattato può
consentire il troncamento desiderato;


> Io non sono in grado di metterci mano, ma se serve posso mettere due
> eurini ....

il mio obiettivo attuale è conoscere ed imparare ... ed ogni occasione
è buona;


> .... e dare il mio apporto come tester.

questo lo davo per scontato :-) :-) :-)


sarebbe oltremodo gradita l'attività di tutoring di chiunque abbia
voglia di farla :-) anche se quello che ha appena detto Andrea P. circa
la precisione in virgola mobile vanifica il mio progetto :-(

 
> Grazie

a te, ciao,
giuliano





_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Giuliano Curti
Il giorno Thu, 16 Jan 2014 18:08:08 +0100
giulianc51 <[hidden email]> ha scritto:

> Il giorno Thu, 16 Jan 2014 14:58:18 +0100
> Giuseppe Patti <[hidden email]> ha scritto:
>
> ........

ciao a tutti,

così, per divertimento, ho messo insieme quelle routine di cui parlavo
per affrontare l'arrotondamento delle coordinate (snapToGrid);

alle prime, sommarie prove riscontro però il problema segnalato da
Andrea: arrotondando ad es. a 3 cifre decimali (*) sembra andare tutto
bene, ma poi trovo qualche coordinata con la ennesima cifra decimale
occupata o con tutti 9 (**);

sembra, dico sembra, che il troncamento all'intero funzioni meglio;
fosse così si potrebbe scalare all'unità decimale desiderata troncando
all'intero, ma non so la reazione di QGIS a trattare con coordinate
dell'ordine di 7+7 = 14 cifre !

per cavare un ragno dal buco credo serva la consulenza di un esperto
conoscitore della rappresentazione numerica decimale;

my 2 cents :-)


ciao,
giuliano

(*) non sono affari miei ma confesso di essere curioso di capire cosa
serve, magari in un sistema GaussBoaga, con coordinate dell'ordine dei
milioni di km, snappare a 10 microns (1/10**7), ma non sono affari
miei :-)

(**) credo che il campo numerico rappresentato digitalmente non sia
continuo !

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Giuseppe Patti
In reply to this post by Andrea Peri
Ciao a tutti,

Vorrei rianimare la discussione su questo thread (reperibile per intero qui: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Risoluzione-spaziale-dataset-tt7585941.html) finito poi su un binario morto ma che credo di grande importanza.

L'occasione mi è data dal rilascio di due nuovi software, Shapefile Fixer e GeoUML Report Filler da parte dell'amico Jody Marca (http://www.jodymarca.com/it/)

Che potete trovare alla pagina:

http://www.jodymarca.com/tools/

Ai fini di questo thread è in particolare interessante lo Shapefile Fixer, che si occupa di arrotondamento di coordinate e di aggiustamento delle geometrie.

Anche in questo caso però si ripresenta l'inghippo che ha originato questa discussione: arrotondate le cifre decimali dei vertici che rappresentano una geometria ad un numero fissato, mi aspetto che se imposto la precisione a 3 cifre decimali il vertice 543523.1237 diventi 543523.124 ed in effetti questo è quello che succede. Però se provo ad interrogare quella geometria arrotondata chiedendone il wkt (ad es. in QGis) mi ritorna una rappresentazione che è "molto prossima" a quella arrotondata ma non esattamente arrotondata, del tipo 543523.123999900000000034252. Credo che questo problema sia legato alla "virgola mobile", infatti lo stesso problema mi si ripresenta se uso ST_SnapToGrid in Postgis o Spatialite, oppure lo strumento "Semplifica geometrie" di OpenJump. Ovviamente il problema non si presenta in ST_SnapToGrid se imposto uno "snap" molto alto (superiore a 1) che a quel punto taglia tutta la parte decimale.

Allo scopo ho aperto un ticket su PostGis che trovate qui:

http://trac.osgeo.org/postgis/ticket/2611

Sarebbe utile, credo, pervenire ad una gestione ragionata e trasparente (ovvero meno "randomica") di queste situazioni.

Saluti a tutti!




On 16/01/2014 16:50, aperi2007 wrote:
Tieni presente che ci sono dei numeri che in FP64 non sono esprimibili con un numero FINITO di cifre.

Ad esempio il valore 0.1
e quindi anche 0.01 0.001 0.00001 etc...
puo' sembrare strano , ma non è espirmiile con un numero finito di cifre e quindi se lo memorizzi in una variabile Double e poi lo vai a rileggere ti ritorna con tutte e 17 le cifre decimali.
E non è l'unico.
Lo snaptogrid
non puo' bypassare il formato binario e quindi se deve esprimire un numero che in binario non si esprime deve per forza approssimarlo.

A.

On 16/01/2014 10:18, Giuseppe Patti wrote:
E infatti io avrei usato ST_SnapToGrid, però se poi vado a chiedere la geometria del poligono dopo lo snap mi tornano fuori le 17 cifre. Sbaglio io qualcosa o capisco male il funzionamento di ST_SnapToGrid?


On 16/01/2014 09:22, Andrea Peri wrote:
Aggiungo un dettaglio che forse non è trascurabile.

A parte la specifica utente:
snappare su griglia prefissata.

Se l'obiettivo vero è riprodurre la griglia del noto software commerciale.
Occorre stare molto attenti. Perche' la griglia cambia in base al box di imiego definito per il dataset.
E il processo è irreversibile.
Ovvero lo snap che egli effettua non è dinamico ma statico  al momento del caricamento.
Dopodiche' resta quello.
Se poi si sposta l'archivio su altra piattaforma lo snap puo' ulteriormente cambiare.
Se poi si passa su uno shapefile, lo snap cambia ulteriormente perche' a quel punto interviene la griglia dell' FP64
E cosi' via.
Per cui non è facile stabilire la griglia esatta da usare.
Occorrerebbe tracciare tutti i passaggi pregressi.

Evito di partire con il solito pistolotto alla luna che sarebbe utile che queste cose venissero riportate nel lineage di una eventuale scheda di metadato , perche' serve proprio a profilare questo genere di situazioni. La specifica nazionale prevede altre metodiche che non incoraggiano  questo tipo di informazione e quindi lascio perdere pure io.


A.



Il giorno 16 gennaio 2014 09:03, Andrea Peri <[hidden email]> ha scritto:
Se la griglia è regolare.
Prendi spatialite, con esso ti fai generare un dataset che è una griglia rettangolare che parte da una coordinata che gli dici te e che ha un delta pari all'incremento.
Poi carichi tale dataset su qgis e forzi lo snap di tutti gli altri dataset su di esso.

Oppure altra opzione:
sempre in spatialite:

carici hi il dtaaset che devi portare su tale griglie e poi lanci:

update tabella set geometry = ST_SnapToGrid(.....)

dove li' dentro ci scrivi punto di partenza e delta.

Dovrebbe funzionare.

Io ho usato una strategia simile per troncare (brutta parola, ma è per tagliare corto) i dati del nostro DBT ristrutturato su due cifre decimali.

A.



Il giorno 16 gennaio 2014 08:52, Giuseppe Patti <[hidden email]> ha scritto:

Mettiamola così allora: un cliente vi commissiona un dataset vettoriale in cui i vertici delle geometrie devono essere precisamente posizionati su una griglia a spaziatura omogenea XY pari a 1e^-7, eventuali cifre dopo la settima decimale devono essere al limite pari a zero, eventuali geometrie che in seguito ad operazioni di processing dovessero risultare con coordinate differenti devono essere ricondotte al caso precedente.

Come risolveremmo il problema con strumenti GFoss?



---------- Messaggio inoltrato ----------
From: "G. Allegri" <[hidden email]>
To: Andrea Peri <[hidden email]>
Cc: gfoss <[hidden email]>
Date: Wed, 15 Jan 2014 20:06:25 +0100
Subject: Re: [Gfoss] Risoluzione spaziale dataset

Il problema degli arrotondamenti investe qualsiasi problema geometrico computazionale. Ci sono librerie come le CGAL in grado di lavorare con precisione arbitraria, ma la maggior parte dei software implementa le proprie strategie per gestire i problemi del floating point. Non so se la "portabilità della precisione" sia un problema risolvibile, certamente i software che sfruttano librerie geometriche comuni (vedi GEOS) possono sfruttarne la trasparenza per gestire la cosa, ad es. tramite il Precision Model (usato ad es. dallo SnapToGrid di PostGIS).

Mi sembra comunque che le questioni sono due:

1) come viene rappresentata una coordinata nel formato dati scelto

2) come viene gestita dal software

Il primo credo non sia un problema, visti i tanti mezzi che ci sono (dallo shapefile a PostGIS, ecc.) . Il secondo... bhè, finché un sw è chiuso c'è poco da discutere.

giovanni

Il 15/gen/2014 19:34 "aperi2007" <[hidden email]> ha scritto:
Diciamo che tra parecch softwares si spostano in maniera trasparente.

Un discorso a parte è il noto software commerciale , il quale

UNICO AL MONDO adotta una riclassificazione in "quanti" della coordinata.

Poiche' lui adotta un meccanismo che non trova riscontro in nessun altro software.
Difficile che con altri software si riesca a riprodurre la sua coordinata.
Oltre tutto , se prendi due PC con il medesimo software commerciale, non è assolutamente detto che quando sposti da uno all'altro la coordinata ti rimane invariata.
Dipende da quali altri dataset sono caricati nel medesimo DB di partenza o di destinazione.

A.


On 15/01/2014 18:29, Giuseppe Patti wrote:
Sono d'accordo, ma questo è un altro aspetto del problema. Rimane il nocciolo: se io devo spostare degli shape da un sw ad un altro, è possibile garantire la consistenza delle coordinate? Non penso sia un problema peregrino, ho trovato discussioni analoghe con soluzioni "esoteriche" anche qui:

http://gis.stackexchange.com/questions/68636/spatial-precision-for-editing-in-multiple-gis-clients

http://gis.stackexchange.com/questions/76939/qgis-polygon-precision


Il giorno 15 gennaio 2014 18:01, Andrea Peri <[hidden email]> ha scritto:
Il noto software commerciale permette di impostare la XY resolution , ma all'aumentare della resolution diminuisce la BBOX ammessa.
E viceversa.

Per cui ti crea un bel problema anche lui. Perche' ovviamente o ammetti una resolution veramente bassa (leggi scarsa) oppure non riesci a spostare il dataset su basi dati di lvello nazionale anziche' locale.




Il giorno 15 gennaio 2014 17:44, Giuseppe Patti <[hidden email]> ha scritto:
Ciao. Vorrei approfondire con voi la questione della risoluzione spaziale di dati vettoriali nella quale sono incappato.
In particolare mi riferisco alla precisione delle coordinate ad es. di uno shape, che continuano a variare passando da un software all'altro. In quale modo, anche appoggiandosi ad un DB, sarebbe possibile essere sicuri di avere coordinate di precisione nota e costante settando il numero di cifre decimali alle quali arrotondare? Ad esempio un noto sw commerciale fa impostare i valori di XY_resolution e XY_tolerance creando un file geodatabase, sarebbe interessante capire se esiste la possibilità di raggiungere lo stesso risultato anche con GFOSS.

Saluti

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013





_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------




_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Jody Marca

Ciao Giuseppe, ciao a tutti

Ho letto la discussione e mi sembra che la fonte del problema sia già stato inquadrato da Andrea; infatti nasce tutto dalla difficoltà di rappresentare l'insieme infinito dei numeri reali con il double che ha un uno numero di bit finito

Prendo per esempio il caso del numero che mi hai segnalato 543523.124

Questo numero non è rappresentabile esattamente con il sistema double

I passaggi per rappresentarlo richiede la normalizzazione del numero in base 2 ->  1,03668808746337890625 * 2^19

e la traduzione in binario (segno - esponente - mantissa )

0 10000010010 0000100101100100011000111111011111001110110110010001

Il numero rappresentato è 543523.123999999952502548694611 + un errore che viene perso.

Se io dovessi memorizzare questo numero così com'è e poi rileggerlo otterrei sempre lo stesso numero e se in visualizzazione dovessi applicare un arrotondamento alla 10^-10 comunque otterrei 543523.124.

Quello che stiamo facendo noi però non è la memorizzazione di un numero inserito ma di un numero ottenuto da un processo di rounding e riposizionato sulla griglia dei double che com'è detto non è omogenea ma è molto più fitta quanto più ci si avvicina allo 0 e tanto più rada quando si va verso infinito.

Siamo sicuri che il sistema scelga proprio "0 10000010010 0000100101100100011000111111011111001110110110010001" ?

potrebbe invece scegliere il double successivo (0 10000010010 0000100101100100011000111111011111001110110110010010) che corrisponde al numero 543523.124000000068917870521545 ?

Guarda caso se io dovessi applicare  un arrotondamento alla 10^-10 per la visualizzazione ottengo proprio 543523.12400000001

Ho fatto la seguente prova:

- creo una tabella postgis con 1 geometria ST_GeomFromText('POINT(543523.124  543523.124)')

la carico in openjump e vedo POINT(543523.124  543523.124) quindi desumo in double sia contenuto il valore 543523.12399...

applico alla geometria ST_SnapToGrid(geom, 0.001) e ottengo POINT ( 543523.1240000001 543523.1240000001 ) quindi il contenuto del double è 543523.12400000006...

Questo significa che o ST_SnapToGrid o le librerie di traduzione da PostGIS a JTS (utilizzato da Openjump) apportano questo cambio di rappresentazione interna

Il problema a mio parere può nascere quando si devono far convivere geometrie che hanno subito uno snap con griglie differenti o con algoritmi differenti. Se dovessi usare in openjump/qgis.... degli shape che arrivano da sistemi diversi non eseguo un'arrotonda coordinate potrei avere delle violazioni di alcune regole topologiche in fase di validazione. Consiglio è applicare sempre un arrotondamento con il medesimo algoritmo (sia ST_SnapToGrid o Shapefile Fixer o un altro programma) è vero che avrai delle modifiche minime della geometria ma andrai a salvaguardare le regole topologiche

Se poi dovessi reimportare questi dati nel sistema con tolleranza XY diciamo inferiore a 10^-8 (per essere cauti) il problema dovrebbe risolversi da solo poichè tutte le coordinate saranno ricalcolate in base alla griglia.

L'altra questione relativa all'utilizzo snap superiore a 1; in verità il problema della rappresentazione non sparisce ma avendo tutto l'esponente utilizzabile per la memorizzazione del numero intero è trascurabile infatti inizia ad essere difficili rappresentare interi quando superiamo il 10^10 / 10^15 quindi per il dominio delle coordinate spaziali penso sia trascurabile

Come fare a risolvere questi problemi? Semplice non utilizzare il double per la memorizzazione come del resto si fa in molti contesti dove gli errori di rappresentazione non sono ammessi. Pur esistendoci dei tipi di dato sostitutivi (es Bigdecimal.... ) non credo sia pensabile risolvere definitivamente tale problema a breve poichè questo implicherebbe abbandonare gli shapefile e soprattutto aggiornare la maggior parte dei software commerciali e non.

Jody



2014-02-12 9:40 GMT+01:00 Giuseppe Patti <[hidden email]>:
Ciao a tutti,

Vorrei rianimare la discussione su questo thread (reperibile per intero qui: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Risoluzione-spaziale-dataset-tt7585941.html) finito poi su un binario morto ma che credo di grande importanza.

L'occasione mi è data dal rilascio di due nuovi software, Shapefile Fixer e GeoUML Report Filler da parte dell'amico Jody Marca (http://www.jodymarca.com/it/)

Che potete trovare alla pagina:

http://www.jodymarca.com/tools/

Ai fini di questo thread è in particolare interessante lo Shapefile Fixer, che si occupa di arrotondamento di coordinate e di aggiustamento delle geometrie.

Anche in questo caso però si ripresenta l'inghippo che ha originato questa discussione: arrotondate le cifre decimali dei vertici che rappresentano una geometria ad un numero fissato, mi aspetto che se imposto la precisione a 3 cifre decimali il vertice 543523.1237 diventi 543523.124 ed in effetti questo è quello che succede. Però se provo ad interrogare quella geometria arrotondata chiedendone il wkt (ad es. in QGis) mi ritorna una rappresentazione che è "molto prossima" a quella arrotondata ma non esattamente arrotondata, del tipo 543523.123999900000000034252. Credo che questo problema sia legato alla "virgola mobile", infatti lo stesso problema mi si ripresenta se uso ST_SnapToGrid in Postgis o Spatialite, oppure lo strumento "Semplifica geometrie" di OpenJump. Ovviamente il problema non si presenta in ST_SnapToGrid se imposto uno "snap" molto alto (superiore a 1) che a quel punto taglia tutta la parte decimale.

Allo scopo ho aperto un ticket su PostGis che trovate qui:

http://trac.osgeo.org/postgis/ticket/2611

Sarebbe utile, credo, pervenire ad una gestione ragionata e trasparente (ovvero meno "randomica") di queste situazioni.

Saluti a tutti!





On 16/01/2014 16:50, aperi2007 wrote:
Tieni presente che ci sono dei numeri che in FP64 non sono esprimibili con un numero FINITO di cifre.

Ad esempio il valore 0.1
e quindi anche 0.01 0.001 0.00001 etc...
puo' sembrare strano , ma non è espirmiile con un numero finito di cifre e quindi se lo memorizzi in una variabile Double e poi lo vai a rileggere ti ritorna con tutte e 17 le cifre decimali.
E non è l'unico.
Lo snaptogrid
non puo' bypassare il formato binario e quindi se deve esprimire un numero che in binario non si esprime deve per forza approssimarlo.

A.

On 16/01/2014 10:18, Giuseppe Patti wrote:
E infatti io avrei usato ST_SnapToGrid, però se poi vado a chiedere la geometria del poligono dopo lo snap mi tornano fuori le 17 cifre. Sbaglio io qualcosa o capisco male il funzionamento di ST_SnapToGrid?


On 16/01/2014 09:22, Andrea Peri wrote:
Aggiungo un dettaglio che forse non è trascurabile.

A parte la specifica utente:
snappare su griglia prefissata.

Se l'obiettivo vero è riprodurre la griglia del noto software commerciale.
Occorre stare molto attenti. Perche' la griglia cambia in base al box di imiego definito per il dataset.
E il processo è irreversibile.
Ovvero lo snap che egli effettua non è dinamico ma statico  al momento del caricamento.
Dopodiche' resta quello.
Se poi si sposta l'archivio su altra piattaforma lo snap puo' ulteriormente cambiare.
Se poi si passa su uno shapefile, lo snap cambia ulteriormente perche' a quel punto interviene la griglia dell' FP64
E cosi' via.
Per cui non è facile stabilire la griglia esatta da usare.
Occorrerebbe tracciare tutti i passaggi pregressi.

Evito di partire con il solito pistolotto alla luna che sarebbe utile che queste cose venissero riportate nel lineage di una eventuale scheda di metadato , perche' serve proprio a profilare questo genere di situazioni. La specifica nazionale prevede altre metodiche che non incoraggiano  questo tipo di informazione e quindi lascio perdere pure io.


A.



Il giorno 16 gennaio 2014 09:03, Andrea Peri <[hidden email]> ha scritto:
Se la griglia è regolare.
Prendi spatialite, con esso ti fai generare un dataset che è una griglia rettangolare che parte da una coordinata che gli dici te e che ha un delta pari all'incremento.
Poi carichi tale dataset su qgis e forzi lo snap di tutti gli altri dataset su di esso.

Oppure altra opzione:
sempre in spatialite:

carici hi il dtaaset che devi portare su tale griglie e poi lanci:

update tabella set geometry = ST_SnapToGrid(.....)

dove li' dentro ci scrivi punto di partenza e delta.

Dovrebbe funzionare.

Io ho usato una strategia simile per troncare (brutta parola, ma è per tagliare corto) i dati del nostro DBT ristrutturato su due cifre decimali.

A.



Il giorno 16 gennaio 2014 08:52, Giuseppe Patti <[hidden email]> ha scritto:

Mettiamola così allora: un cliente vi commissiona un dataset vettoriale in cui i vertici delle geometrie devono essere precisamente posizionati su una griglia a spaziatura omogenea XY pari a 1e^-7, eventuali cifre dopo la settima decimale devono essere al limite pari a zero, eventuali geometrie che in seguito ad operazioni di processing dovessero risultare con coordinate differenti devono essere ricondotte al caso precedente.

Come risolveremmo il problema con strumenti GFoss?



---------- Messaggio inoltrato ----------
From: "G. Allegri" <[hidden email]>
To: Andrea Peri <[hidden email]>
Cc: gfoss <[hidden email]>
Date: Wed, 15 Jan 2014 20:06:25 +0100
Subject: Re: [Gfoss] Risoluzione spaziale dataset

Il problema degli arrotondamenti investe qualsiasi problema geometrico computazionale. Ci sono librerie come le CGAL in grado di lavorare con precisione arbitraria, ma la maggior parte dei software implementa le proprie strategie per gestire i problemi del floating point. Non so se la "portabilità della precisione" sia un problema risolvibile, certamente i software che sfruttano librerie geometriche comuni (vedi GEOS) possono sfruttarne la trasparenza per gestire la cosa, ad es. tramite il Precision Model (usato ad es. dallo SnapToGrid di PostGIS).

Mi sembra comunque che le questioni sono due:

1) come viene rappresentata una coordinata nel formato dati scelto

2) come viene gestita dal software

Il primo credo non sia un problema, visti i tanti mezzi che ci sono (dallo shapefile a PostGIS, ecc.) . Il secondo... bhè, finché un sw è chiuso c'è poco da discutere.

giovanni

Il 15/gen/2014 19:34 "aperi2007" <[hidden email]> ha scritto:
Diciamo che tra parecch softwares si spostano in maniera trasparente.

Un discorso a parte è il noto software commerciale , il quale

UNICO AL MONDO adotta una riclassificazione in "quanti" della coordinata.

Poiche' lui adotta un meccanismo che non trova riscontro in nessun altro software.
Difficile che con altri software si riesca a riprodurre la sua coordinata.
Oltre tutto , se prendi due PC con il medesimo software commerciale, non è assolutamente detto che quando sposti da uno all'altro la coordinata ti rimane invariata.
Dipende da quali altri dataset sono caricati nel medesimo DB di partenza o di destinazione.

A.


On 15/01/2014 18:29, Giuseppe Patti wrote:
Sono d'accordo, ma questo è un altro aspetto del problema. Rimane il nocciolo: se io devo spostare degli shape da un sw ad un altro, è possibile garantire la consistenza delle coordinate? Non penso sia un problema peregrino, ho trovato discussioni analoghe con soluzioni "esoteriche" anche qui:

http://gis.stackexchange.com/questions/68636/spatial-precision-for-editing-in-multiple-gis-clients

http://gis.stackexchange.com/questions/76939/qgis-polygon-precision


Il giorno 15 gennaio 2014 18:01, Andrea Peri <[hidden email]> ha scritto:
Il noto software commerciale permette di impostare la XY resolution , ma all'aumentare della resolution diminuisce la BBOX ammessa.
E viceversa.

Per cui ti crea un bel problema anche lui. Perche' ovviamente o ammetti una resolution veramente bassa (leggi scarsa) oppure non riesci a spostare il dataset su basi dati di lvello nazionale anziche' locale.




Il giorno 15 gennaio 2014 17:44, Giuseppe Patti <[hidden email]> ha scritto:
Ciao. Vorrei approfondire con voi la questione della risoluzione spaziale di dati vettoriali nella quale sono incappato.
In particolare mi riferisco alla precisione delle coordinate ad es. di uno shape, che continuano a variare passando da un software all'altro. In quale modo, anche appoggiandosi ad un DB, sarebbe possibile essere sicuri di avere coordinate di precisione nota e costante settando il numero di cifre decimali alle quali arrotondare? Ad esempio un noto sw commerciale fa impostare i valori di XY_resolution e XY_tolerance creando un file geodatabase, sarebbe interessante capire se esiste la possibilità di raggiungere lo stesso risultato anche con GFOSS.

Saluti

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013





_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------





_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Research Assistant - Politecnico di Milano
Member of SpatialDBgroup
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

a.furieri
On Wed, 12 Feb 2014 12:11:06 +0100, Jody Marca wrote:
> Come fare a risolvere questi problemi? Semplice non utilizzare il
> double per la memorizzazione come del resto si fa in molti contesti
> dove gli errori di rappresentazione non sono ammessi. Pur esistendoci
> dei tipi di dato sostitutivi (es Bigdecimal.... ) non credo sia
> pensabile risolvere definitivamente tale problema a breve poichè
> questo implicherebbe abbandonare gli shapefile e soprattutto
> aggiornare la maggior parte dei software commerciali e non.
>

... mi permetto di aggiungere una "piccola" nota a margine per
quanto riguarda l'efficienza di calcolo.

moltissimi algoritmi di uso molto frequente in ambito GeoSpatial
(lunghezze ed aree, minima distanza, intersezioni etc) richiedono
montagne di calcoli trigonometrici in Floating Point.

tutti i moderni microprocessori supportano direttamente in HW
questo tipo di operazioni, e sono in grado di macinare un
numero veramente impressionante di operazioni per secondo;
e tutte le librerie matematiche di base (su qualsiasi sistema
operativo) sono ottimizzate per spremere anche l'ultima
goccia della potenza di calcolo offerta dall'HW

per gli ultimi Intel i7 multicore (un processore normalmente
usato per i PC di fascia alta) parliamo di circa 70/100 GigaFLOPS,
cioe' quasi un centinaio di miliardi di operazioni al secondo.
eppure (notoriamente) molte operazioni di calcolo GIS sono pur
sempre di una lentezza mortale ;-)

usare formati alternativi (Decimal, BigDeccimal) risolverebbe
certamente qualsiasi problema di precisione ed arrotondamento,
ma al prezzo di un rallentamento mortale della velocita' di
calcolo, visto che occorrerebbe rinunciare a sfruttare il
supporto HW floating point per usare piuttosto delle routines
completamente implementate via sw e capaci di preservare
inalterata una precisione di calcolo infinita.

cioe' si tornerebbe sostanzialmente indietro nel tempo alla
situazione tipica degli anni '70 ed '80 quando le CPU non
offrivano nessun supporto HW per il floating point, che
veniva piuttosto implementato tramite emulazione sw; oppure
occorreva spendere un bel po' di soldini per acquistare a
parte un co-processore math in grado di offrire supporto hw

se la memoria non mi inganna, la differenza nella velocita'
di calcolo tra "full HW" ed emulazione SW era di oltre cento
volte :-D

siamo veramente sicuri che un miglioramento marginale della
precisione ultra-fine valga la pena di un siffatto handicap
prestazionale ?

... e mi astengo volutamente da qualsiasi considerazione
relativa agli spazi necessari per l'archiviazione dati, che
ovviamente "gonfierebbero" in modo impressionante.

ciao Sandro


_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Jody Marca
Solo una precisazione
io NON sono favorevole ad una migrazione da double ad un datatype diverso, quello che ho detto era un modo per risolverle il problema perchè è causato dal formato di memorizzazione che non consente l'utilizzo di una griglia omogenea
Sono sfavorevole non tanto per motivi prestazionali, anche se condivido pienamente quanto scritto da Sandro, ma perchè si dovrebbero aggiornare tutti gli applicativi ed abbandonare gli shapefile cosa che ad oggi penso sia pura fantasia...
Come ho già detto il mio consiglio, e approccio abituale, è quello di applicare un'arrotondamento omogeneo su tutto il dataset dei dati poichè il problema non è marginale.
--> Test: SELECT ST_equals(ST_GeomFromText('POINT(0  543523.124)'), ST_SnapToGrid(ST_GeomFromText('POINT(0  543523.124)'), 0.001)  );
Se uso l'operatore ST_Equals passando come primo parametro il punto POINT(0  543523.124) e come secondo parametro lo stesso punto dopo lo l'arrotondamento potrei ottenere false; lo stesso problema potrebbe quindi creare sliver polygon, reti non connesse, touch che diventano overlap o disjoint...
I sistemi commerciali solitamente aggirano il problema con la valutazione con tolleranza; resta perà da capire che cosa si intende per tolleranza poichè può essere implementata in n modi diversi (ma questa è un'altra storia e non vorrei aprire il vaso di pandora...)

Jody



2014-02-12 12:38 GMT+01:00 <[hidden email]>:
On Wed, 12 Feb 2014 12:11:06 +0100, Jody Marca wrote:
Come fare a risolvere questi problemi? Semplice non utilizzare il
double per la memorizzazione come del resto si fa in molti contesti
dove gli errori di rappresentazione non sono ammessi. Pur esistendoci
dei tipi di dato sostitutivi (es Bigdecimal.... ) non credo sia
pensabile risolvere definitivamente tale problema a breve poichè
questo implicherebbe abbandonare gli shapefile e soprattutto
aggiornare la maggior parte dei software commerciali e non.


... mi permetto di aggiungere una "piccola" nota a margine per
quanto riguarda l'efficienza di calcolo.

moltissimi algoritmi di uso molto frequente in ambito GeoSpatial
(lunghezze ed aree, minima distanza, intersezioni etc) richiedono
montagne di calcoli trigonometrici in Floating Point.

tutti i moderni microprocessori supportano direttamente in HW
questo tipo di operazioni, e sono in grado di macinare un
numero veramente impressionante di operazioni per secondo;
e tutte le librerie matematiche di base (su qualsiasi sistema
operativo) sono ottimizzate per spremere anche l'ultima
goccia della potenza di calcolo offerta dall'HW

per gli ultimi Intel i7 multicore (un processore normalmente
usato per i PC di fascia alta) parliamo di circa 70/100 GigaFLOPS,
cioe' quasi un centinaio di miliardi di operazioni al secondo.
eppure (notoriamente) molte operazioni di calcolo GIS sono pur
sempre di una lentezza mortale ;-)

usare formati alternativi (Decimal, BigDeccimal) risolverebbe
certamente qualsiasi problema di precisione ed arrotondamento,
ma al prezzo di un rallentamento mortale della velocita' di
calcolo, visto che occorrerebbe rinunciare a sfruttare il
supporto HW floating point per usare piuttosto delle routines
completamente implementate via sw e capaci di preservare
inalterata una precisione di calcolo infinita.

cioe' si tornerebbe sostanzialmente indietro nel tempo alla
situazione tipica degli anni '70 ed '80 quando le CPU non
offrivano nessun supporto HW per il floating point, che
veniva piuttosto implementato tramite emulazione sw; oppure
occorreva spendere un bel po' di soldini per acquistare a
parte un co-processore math in grado di offrire supporto hw

se la memoria non mi inganna, la differenza nella velocita'
di calcolo tra "full HW" ed emulazione SW era di oltre cento
volte :-D

siamo veramente sicuri che un miglioramento marginale della
precisione ultra-fine valga la pena di un siffatto handicap
prestazionale ?

... e mi astengo volutamente da qualsiasi considerazione
relativa agli spazi necessari per l'archiviazione dati, che
ovviamente "gonfierebbero" in modo impressionante.

ciao Sandro



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013


_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
Research Assistant - Politecnico di Milano
Member of SpatialDBgroup
Reply | Threaded
Open this post in threaded view
|

Re: Risoluzione spaziale dataset

Giuseppe Patti
Grazie mille a tutti per le illuminanti delucidazioni. Mi chiedo solo perché alcune procedure ti chiedano "certe" precisioni che poi in uno shapefile definito "di consegna" non possono essere mantenute.....transeat!

Saluti

On 12/02/2014 15:04, Jody Marca wrote:
Solo una precisazione
io NON sono favorevole ad una migrazione da double ad un datatype diverso, quello che ho detto era un modo per risolverle il problema perchè è causato dal formato di memorizzazione che non consente l'utilizzo di una griglia omogenea
Sono sfavorevole non tanto per motivi prestazionali, anche se condivido pienamente quanto scritto da Sandro, ma perchè si dovrebbero aggiornare tutti gli applicativi ed abbandonare gli shapefile cosa che ad oggi penso sia pura fantasia...
Come ho già detto il mio consiglio, e approccio abituale, è quello di applicare un'arrotondamento omogeneo su tutto il dataset dei dati poichè il problema non è marginale.
--> Test: SELECT ST_equals(ST_GeomFromText('POINT(0  543523.124)'), ST_SnapToGrid(ST_GeomFromText('POINT(0  543523.124)'), 0.001)  );
Se uso l'operatore ST_Equals passando come primo parametro il punto POINT(0  543523.124) e come secondo parametro lo stesso punto dopo lo l'arrotondamento potrei ottenere false; lo stesso problema potrebbe quindi creare sliver polygon, reti non connesse, touch che diventano overlap o disjoint...
I sistemi commerciali solitamente aggirano il problema con la valutazione con tolleranza; resta perà da capire che cosa si intende per tolleranza poichè può essere implementata in n modi diversi (ma questa è un'altra storia e non vorrei aprire il vaso di pandora...)

Jody



2014-02-12 12:38 GMT+01:00 <[hidden email]>:
On Wed, 12 Feb 2014 12:11:06 +0100, Jody Marca wrote:
Come fare a risolvere questi problemi? Semplice non utilizzare il
double per la memorizzazione come del resto si fa in molti contesti
dove gli errori di rappresentazione non sono ammessi. Pur esistendoci
dei tipi di dato sostitutivi (es Bigdecimal.... ) non credo sia
pensabile risolvere definitivamente tale problema a breve poichè
questo implicherebbe abbandonare gli shapefile e soprattutto
aggiornare la maggior parte dei software commerciali e non.


... mi permetto di aggiungere una "piccola" nota a margine per
quanto riguarda l'efficienza di calcolo.

moltissimi algoritmi di uso molto frequente in ambito GeoSpatial
(lunghezze ed aree, minima distanza, intersezioni etc) richiedono
montagne di calcoli trigonometrici in Floating Point.

tutti i moderni microprocessori supportano direttamente in HW
questo tipo di operazioni, e sono in grado di macinare un
numero veramente impressionante di operazioni per secondo;
e tutte le librerie matematiche di base (su qualsiasi sistema
operativo) sono ottimizzate per spremere anche l'ultima
goccia della potenza di calcolo offerta dall'HW

per gli ultimi Intel i7 multicore (un processore normalmente
usato per i PC di fascia alta) parliamo di circa 70/100 GigaFLOPS,
cioe' quasi un centinaio di miliardi di operazioni al secondo.
eppure (notoriamente) molte operazioni di calcolo GIS sono pur
sempre di una lentezza mortale ;-)

usare formati alternativi (Decimal, BigDeccimal) risolverebbe
certamente qualsiasi problema di precisione ed arrotondamento,
ma al prezzo di un rallentamento mortale della velocita' di
calcolo, visto che occorrerebbe rinunciare a sfruttare il
supporto HW floating point per usare piuttosto delle routines
completamente implementate via sw e capaci di preservare
inalterata una precisione di calcolo infinita.

cioe' si tornerebbe sostanzialmente indietro nel tempo alla
situazione tipica degli anni '70 ed '80 quando le CPU non
offrivano nessun supporto HW per il floating point, che
veniva piuttosto implementato tramite emulazione sw; oppure
occorreva spendere un bel po' di soldini per acquistare a
parte un co-processore math in grado di offrire supporto hw

se la memoria non mi inganna, la differenza nella velocita'
di calcolo tra "full HW" ed emulazione SW era di oltre cento
volte :-D

siamo veramente sicuri che un miglioramento marginale della
precisione ultra-fine valga la pena di un siffatto handicap
prestazionale ?

... e mi astengo volutamente da qualsiasi considerazione
relativa agli spazi necessari per l'archiviazione dati, che
ovviamente "gonfierebbero" in modo impressionante.

ciao Sandro



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013



_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013
12