[Gfoss] formato geometria

a.furieri a lqt.it a.furieri a lqt.it
Mar 12 Ott 2010 17:05:21 CEST


On Tue, 12 Oct 2010 16:13:37 +0200, Paolo Cavallini wrote
> Il 12/10/2010 16:10, marco zanieri ha scritto:
> > Per esempio in una tabella di feature class areale nel campo the_geom ho
> > il seguente valore:
> > 0101000000D441C64A39023A41A112F8E2729C5241
> > che credo non sia in formato WKT
> 
> WKB, vedi http://en.wikipedia.org/wiki/Well-known_binary
> 

Mi permetto di corregere:
"quasi" WKB, ma non esattamente ...

Non è una idiosincrasia di PostGIS: è una
regola costante per praticamente tutti gli
Spatial DBMS (SpatiaLite compreso, ovvio)

a) i formati standard WKB e WKT si usano
   "esternamente" al DB
b) ma poi ciascun DBMS utilizza un proprio specifico
   formato binario specifico per la rappresentazione
   "interna" delle geometrie.
   basti solo pensare al fatto che WKB *non*
   prevede la memorizzazione dello SRID ....
c) di regola questi "formati binari interni"
   assomigliano molto al WKB, ma hanno sempre
   qualche header/footer "esoterico".
   btw le rappresentazioni "interne" utilizzate
   da MySQL Spatial / PostgreSQL PostGIS / SpatiaLite
   sono sostanzialmente diverse ed incompatibili. 
   Ma grazie alla "traduzione" standard WKB/WKT sono 
   anche reciprocamente pienamente interoperabili.

Insomma, mettersi a "sciacquettare a manina" i
dati binari memorizzati dentro ad uno Spatial DBMS
non è per nulla cosa saggia e prudente ...
e presumibilmente può anche generare spiacevoli
sorprese quando cambia la versione (perchè gli
sviluppatori possono anche legittimamente
decidere di modificare/ottimizzare il formato 
interno).

Soluzione: usare sempre le apposite funzioni
di accesso ai dati: AsText(), AsBinary(),
GeomFromText(), GeomFromWKB() etc.

queste sono state inserite nello standard OGC-SFS
proprio per disaccoppiare le rappresentazioni
interne da quelle esterne, rendendo tutti i
meccanismi di implementazione totalmente
trasparenti per gli utilizzatori.

e servono ottimamente per evitare di dovere
mai "mettere le mani" sui formati interni.

ciao Sandro


Maggiori informazioni sulla lista Gfoss