stampa questo articolo
Il 19 Marzo 2013 è stata rilasciata la versione 2.4 di MongoDB, un data base noSQL dalle enormi potenzialità.

Questo la nota di rilascio ufficiale

http://docs.mongodb.org/manual/release-notes/2.4/

E’ da segnalare la nuova feature sugli oggetti geometrici che, da questa versione, supporta i tipi complessi (geoJSON) e pertanto consente di rappresentarli geometricamente nel formato WGS84.

I tipi supportati sono punto, linea e poligono da associare al nuovo indice spaziale “2dsphere“.

Con la precedente versione questo non era possibile in quanto era supportato solo l’oggetto semplice “punto” su piano euclideo (coppia di lat/lon senza sistema di riferimento) associato all’indice spaziale semplice “2d“.


Che differenza c’è tra un semplice punto su piano euclideo ed un oggetto geometrico complesso?

Tutta la differenza del mondo!

Mentre il primo è solo una coppia di coordinate rappresentata su un semplice piano Euclideo ossia su un piano “piatto” (non sferico come invece è in realtà la terra), del tipo:

{lon, lat}

Il secondo è un oggetto geometrico complesso ($geometry) che oltre alle informazioni su latitudine e longitudine, ha informazioni sul tipo di oggetto geometrico (punto, linea, poligono) e soprattutto sul sistema di riferimento delle coordinate usato.

E’ proprio il sistema di riferimento delle coordinate a caratterizzarne la composizione “sferica” e  quindi la sua rappresentabilità su sistemi GIS di tipo “Earth-like“.

Le query spaziali disponibili associate a questo nuovo oggetto di tipo $geometry sono :

  • Inclusione attraverso l’operatore $geoWithin
  • Intersezione attraverso l’operatore $geoIntersects
  • Prossimità attraverso l’operatore $near

Questa invece la struttura (json) degli oggetti geometrici complessi:

Punto:

1
2
3
4
5
6
{
  loc : { 
         type : "Point" ,
         coordinates : [ 40, 5 ]
  }
}

Linea:

1
2
3
4
5
6
{
    loc : {
           type : "LineString" ,
           coordinates : [ [ 40 , 5 ] , [ 41 , 6 ] ]
    }
}

Poligono:

1
2
3
4
5
6
{
  loc : { 
         type : "Polygon" ,
         coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
  }
}

Il sistema di riferimento di default per gli oggetti $geometry è WGS84.

Questo invece l’indice da creare sulla collection geometrica:

1
db.collection.ensureIndex( { loc : "2dsphere" } )

Certo siamo ancora molto lontani dalle potenzialità dell’oggetto geometrico SDO_GEOMETRY di Oracle, però è certamente un buon inizio.

 

Che ve ne pare? Usate oggetti geometrici con data base noSQL? Vi interessa questo argomento?

Potrebbe interessarti anche ...

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here