Slide 1

Slide 1 text

INDEX 2D

Slide 2

Slide 2 text

@jessecogollo Estudiante de Ing. de sistemas en @EAFIT. Desarrollador JAVASCRIPT con el framework @SAILSJS. Y por supuesto en mis desarrollos utilizó en la base de datos @MONGODB.

Slide 3

Slide 3 text

Introducción En tiempos donde los dispositivos móviles son el presente y el futuro(por ahora). Es importante conocer y “exprimir” las funcionalidades que estos dispositivos nos proveen. En este caso hablaremos de geolocalización. Ya que MongoDB nos proporciona una funcionalidad para manejar la longitud y latitud de una manera fácil.

Slide 4

Slide 4 text

Contenido 1) Latitud y longitud 2) Consultas e índices geoespaciales MongoDB 3) GeoJSON 4) Compatibilidad (sharding) 5) Creación del índice 6) Operadores 7) where

Slide 5

Slide 5 text

Latitud y longitud (6.199462,-75.578271) * Latitud: Norte(+) y Sur(-) * Longitud: Este(+) y Oeste(-) Estas son representadas en grados. pero se convierten a decimales para mejor manejo. Ejemplo: (18°14’70″ N) = (18 + (14 / 60) + (70 / 3600)) = 18.252 Precisión (decimales): 6-5: Lugares (EAFIT - 6.199462, -75.578271). 4-3: Ciudades (Medellín - 6.199,-75.578). 2-1: País (Colombia - 6.1,-75.5).

Slide 6

Slide 6 text

Consultas e índices geoespaciales MongoDB Índices: Esfera(2dsphere.): Para calcular la geometría sobre la tierra. Los datos de la localización se almacenan en objetos GeoJSON WGS84. MongoDB soporta Point - LineString - Polygon. Soporta todas las consultas que MongoDB geospatial. Esfera(2dsphere) versión 2: MultiPoint - MultiLineString - MultiPolygon y GeometryCollection. Plano (2d): Legado par coordenadas [Longitud, latitud]. Este formato almacena los datos como puntos en un plano de dos dimensiones. Utilícelo si su base de datos tiene datos legados de una versión anterior a la 2.2 ó no tiene intención de almacenar los datos de localización como objetos GeoJSON. Operadores de consulta: Inclusión ($geoWithin): Permite consultar los lugares que se encuentran dentro de un polígono. Intersección ($geoIntersects): Permite consultar los lugares que se encuentran entre dos polígonos. (solo 2dsphere). Proximidad ($near): Permite consultar los puntos cerca de otros puntos. Este requiere que sea un índice 2d ó 2dsphere.

Slide 7

Slide 7 text

GeoJSON Point - LineString - Polygon - MultiPoint - MultiLineString - MultiPolygon - GeometryCollection

Slide 8

Slide 8 text

Compatibilidad (sharding) * un índice (2d - 2dsphere) no puede ser utilizado como índice de un sharding. * Se puede crear y mantener un índice (2d - 2dsphere) en una colección “sharded” utilizando otros campos como claves del shard. * las consultas con $near no son soportadas en colecciones “sharded”. Se recomienda utilizar $geonear ó geoWithin en su lugar.

Slide 9

Slide 9 text

Creación del índice Rango: latitud(90,-90) - longitud(180.-180) db.collection.ensureIndex({campo:”2d”}) db.collection.ensureIndex({campo:”2dsphere”})

Slide 10

Slide 10 text

Operadores ($geoWithin, $geoIntersects, $near)

Slide 11

Slide 11 text

‘where’ $geometry: Especifica una geometría en formato GeoJSON para operaciones de consulta geoespaciales. $maxDistance: Especifica la distancia máxima para los resultados de una consulta. $center: Especifica un círculo usando par de coordenadas legadas cuando se utiliza geometría plana. $centersphere: Especifica un círculo usando par de coordenadas legadas cuando se utiliza geometría esférica. $box: Especifica un rectángulo usando par de coordenada legadas para las consultas. $polygon: Especifica un polígono usando par de coordenada legadas para las consultas. Tabla de compatibilidad: http://docs.mongodb.org/manual/reference/operator/query- geospatial/#geospatial-query-compatibility-chart

Slide 12

Slide 12 text

Conclusión * MongoDB te facilita la vida en el manejo de la geolocalización. * MongoDB te optimiza el tiempo de desarrollo cuando necesitas utilizar georeferencia. * Falta mucho por descubrir en funcionalidades de MongoDB, esto apenas comienza =)

Slide 13

Slide 13 text

Preguntas

Slide 14

Slide 14 text

Links http://www.maestrosdelweb.com/editorial/google-maps-api-v3-introduccion-y-primeros-pasos/ http://es.wikipedia.org/wiki/Coordenadas_geogr%C3%A1ficas http://docs.mongodb.org/manual/applications/geospatial-indexes/ http://geojson.org/geojson-spec.html http://spatialreference.org http://docs.mongodb.org/manual/reference/operator/query-geospatial/#geospatial-query-compatibility-chart http://docs.mongodb.org/manual/tutorial/build-a-2d-index/#geospatial-indexes-range http://docs.mongodb.org/manual/reference/operator/query/near/#op._S_near http://docs.mongodb.org/manual/core/2dsphere/ https://developers.google.com/maps/licensing

Slide 15

Slide 15 text

Gracias !!!