Axional Geospatial

Extienda su base de datos
con capacidades geo-espaciales

La mayoría de datos están ligados a un lugar: una dirección, un código postal, una ubicación global positioning system (GPS), un censo, una ciudad, una región, un condado, etc. El mapeo geográfico permite visualizar, analizar, crear y manejar datos que tengan un componente geográfico. Además, se pueden construir mapas que visualicen patrones, tendencias y excepciones de los datos.

El hecho de utilizar bases de datos espaciales a través de datos geométricos permite almacenar objetos como puntos, líneas y polígonos; lo cual es una ventaja significativa respecto al mapeo clásico, que está enfocado a analizar datos estadísticos o transaccionales. Las nuevas herramientas geográficas pueden revelar tendencias y patrones ocultos en los datos alfanuméricos.

Axional Geospatial permite implementar extensiones espaciales y simplificar el proceso de construcción de aplicaciones geo-espaciales.

Puntos clave

  • Un diseñador de formularios web permite escribir queries a la base de datos y representarlos en un mapa
  • Una gramática geo-espacial en SQL permite escrbir sentencias geo-espaciales independientes de la base de datos en SQL.
  • Capacidades incorporadas en el software del cliente para trazar ubicaciones

Análisis de datos

Multi Layers

Axional Geospatial puede mostrar múltiples capas de diferentes fuentes de datos en un mapa. Por ejemplo, una compañía quizás está interesada en cruzar diferente información en el mapa, como la ubicación de sus clientes y los datos sociodemogràficos (ingresos medio, edad,…) de la área ( estado, distrito, código postal…).

 

Diferentes atributos pueden ser definidos para cada capa de datos:

  • Label: una etiqueta que identifique el layer que aparecerá en la leyenda.
  • Rango de zoom de visibilidad: un rango mínimo y máximo en el que el layer es visible. Fuera de este, el layer es invisible.
  • Visibilidad inicial: aunque esté en el rango invisible, un layer puede definirse como invisible inicialmente. Puede hacerse visible dinámicamente por el usuario.
  • Categoría: los layers pueden ser agrupados en categorías.
  • Procesar (render) tipos por geometrías: frecuentemente, las bases de datos tienen 3 tipos de tipos geométricos: punto, línea y polígono. Sin embargo, a veces, debido a la naturaleza de los datos, puede ser mejor dibujar las geometrías en un formato especial. Axional Geospatial provee renderers especiales, tales como:
    • Mapa de calor: perfecto para dibujar densidades.
    • Cluster: Útil cuando se tiene un gran número de marcadores (markers).
    • Trazadas GPS: elección para dibujar un camino a partir de puntos GPS.
  • Simbología: permite definiciones de símbolos en un mapa. Es decir, los colores aplicados a las geometrías, la opacidad, los bordes, marcadores de imagen (cuando las geometrías son puntos), etc.
  • Ventana de información: el texto que aparecerá en una caja cuando se pulse una geometría. El texto puede ser una Static String, o una plantilla con referencias a columnas en la fila pulsada o puede ser llamado a través de XSQL-Script en el servidor devolviendo código HTML.
  • Cursor de rastreo: un cursor de rastreo es otro query en SQL utilizado para iterar los layers. Cuando se define el cursor de rastreo, la sentencia del layer SELECT debe de tener variables en las condiciones SQL. Por cada fila devuelta por el cursor de rastreo, el layer SQL es ejecutado con las variables pasadas por el cursor. Eso significa que por cada fila en el cursor, se genera un layer nuevo.

Mapeo temático

Un mapa de Choropleth es un mapa temático en el que se sombrean las áreas en proporción al número de medidas de la variable estadística visualizada, ya sea la densidad de población o los ingresos per cápita, por ejemplo. El mapeo choropleth muestra datos estadísticos agregados sobre regiones predefinidas, como son condados o estados, coloreando o sombreando estas regiones.

No siempre los mapas coloreados son la mejor forma de representar los valores, ya que se enfatizan más las regiones más grandes que aquellas pequeñas. Para corregir esto, en vez de dibujar las formas de los condados, se utilizan círculos, cuyas áreas son proporcionales al valor absoluto de los datos.

El éxito de muchos mapas temáticos, especialmente los mapas de choropleth, depende del hecho de ser capaces de entender como manipular los colores para codificar los datos geográficos utilizando tres dimensiones de los colores: tono, luminosidad y saturación.

Axional Geospatial viene con 3 categorías predefinidas de grupos de paletas de colores, para adaptarse a la naturaleza diferente de los datos representados:

  • Esquema de colores cualitativo: contiene diferentes tonos que mantienen luminosidad y saturación constante. Debe ser utilizado para datos cualitativos (categorías no ordenables ni datos numéricos).
  • Esquema de colores secuencial: cualquier secuencia que está dominada por cambios en luminosidad puede utilizarse para categorías ordenables y datos numéricos.
  • Esquema de colores divergente: debe solamente utilizarse cuando los datos tienen un punto medio natural como el cero (ej.: crecimiento positivo/negativo) o si se quiere comparar lugares con medias nacionales (ej.: datos regionales mostrando los lugares que están por encima y por debajo de la media nacional, en cuanto a los ingresos per cápita).

Además de las paletas que incluye Axional Geospatial, los desarrolladores pueden definir sus propias paletas para ajustarse mejor a los requerimientos de los mapas que se quieran realizar. Asimismo, los usuarios finales pueden cambiar los colores a través de la paleta que hay en la leyenda.

Renderers especiales

Mapas de calor

El mapa de calor es una de las herramientas más útiles y potentes que hay disponible en Business Intelligence, para el análisis de datos. Es una herramienta de visualización que representa múltiples filas de datos asignando diferente tamaño y color a las celdas que representan cada fila.

Si cada punto está asociado con un valor, la representación básica consiste en regiones llamadas áreas, que pueden rellenarse con colores o delimitarse simplemente por líneas de contorno, o ambos.

Los mapas de calor ilustran la densidad y la distribución de los puntos de los datos, generados en tiempo real sobre mapas con zoom y enfoque. La influencia de los puntos (radios) y la gama de colores puede configurarse para dar el revestimiento más apropiado.

Clústeres

Para poder visualizar un gran número de ubicaciones y marcadores, se requieren algunas aplicaciones. Los mash-ups de Google Maps pueden sufrir problemas de rendimiento cuando se intentan visualizar un gran número de marcadores a la vez. Para superar este pobre rendimiento, la información en el mapa debe ser simplificada, por ejemplo, utilizando clústeres.

Los clústeres proporcionan la capacidad de representar ubicaciones cercanas entre ellas en una sola chincheta. Cuando se realice zoom sobre estas ubicaciones, quedaran más alejadas y se separaran en sus propias chinchetas. En vez de volver al servidor a solicitar más datos, se hacen clústeres improvisados en JavaScript para realizar los clústeres client-side. Cuando se tienen unos cuantos millares o menos de datos para visualizar, los clústeres client-side pueden ser significativamente más rápido que los clústeres server-side y pueden reducir las solicitudes al servidor, haciendo la aplicación mucho más escalable. Las siguientes imágenes son un ejemplo de las mismas 6.000 chinchetas antes y después de realizar un clúster.

Tipos de datos geométricos

Axional Geoespatial ofrece una gramática SQL basada en XML con extensiones espaciales para diferentes motores de base se datos. La gramática DML ofrece una amplia gama de funciones para escribir sentencias independientes del SQL nativo, simplificando el uso de los spatial data blade.

<select>
    <columns>
        d.the_geom,
        d.id,
        d.p1,
        d.p2,
        d.p3,
        d.p4,
        d.p5,
        d.p6
    </columns>
    <from alias='d' >
        <select>
            <columns>
                bican_zonas_censales_data.p1,
                bican_zonas_censales_data.p2,
                bican_zonas_censales_data.p3,
                bican_zonas_censales_data.p4,
                bican_zonas_censales_data.p5,
                bican_zonas_censales_data.p6,
                bican_zonas_censales_data.id,
                <geo.asWkt>bican_zonas_censales.the_geom</geo.asWkt> the_geom
            </columns>
            <from alias='c' >
                <select>
                    <columns>
                       <geo.buffer>
                            <geom1><geo.aggrUnion pg_collect='y'>bican_areas_influencia.the_geom</geo.aggrUnion></geom1>
                            <dist>0</dist>
                       </geo.buffer> the_geom
                    </columns>
                    <from table='bican_areas_influencia' />
                    <where>
                        bican_areas_influencia.id_oficina = '#oficina'
                    </where>
                </select>
                <join table='bican_zonas_censales'>
                    <on>
                        <geo.intersects>
                            <geom1>c.the_geom</geom1>
                            <geom2>bican_zonas_censales.the_geom</geom2>
                       </geo.intersects>
                    </on>
                </join>
                <join table='bican_zonas_censales_data'>
                    <on>bican_zonas_censales.gid = bican_zonas_censales_data.id</on>
                </join>
            </from>
        </select>
    </from>
</select>
-- ************************************************************************************
-- DEISTER WebStudio XSQL-SELECT Tue Oct 11 11:21:50 CEST 2011 Engine: ids
-- ************************************************************************************
SELECT
        d.the_geom,
        d.id,
        d.p1,
        d.p2,
        d.p3,
        d.p4,
        d.p5,
        d.p6                  

  FROM (SELECT
                bican_zonas_censales_data.p1,
                bican_zonas_censales_data.p2,
                bican_zonas_censales_data.p3,
                bican_zonas_censales_data.p4,
                bican_zonas_censales_data.p5,
                bican_zonas_censales_data.p6,
                bican_zonas_censales_data.id,
                ST_AsText(bican_zonas_censales.the_geom) the_geom     

  FROM (SELECT
                       ST_Buffer(SE_Dissolve(bican_areas_influencia.the_geom),0) the_geom            

  FROM bican_areas_influencia
 WHERE 

                        bican_areas_influencia.id_oficina = '#oficina' 

) c
      ,bican_zonas_censales
      ,bican_zonas_censales_data
 WHERE 

                        ST_Intersects(c.the_geom,bican_zonas_censales.the_geom)
                     AND
       bican_zonas_censales.gid = bican_zonas_censales_data.id

) d
 WHERE 

                        ST_Intersects(c.the_geom,bican_zonas_censales.the_geom)
                     AND
       bican_zonas_censales.gid = bican_zonas_censales_data.id
-- ************************************************************************************
-- DEISTER WebStudio XSQL-SELECT Tue Oct 11 11:21:50 CEST 2011 Engine: oracle
-- ************************************************************************************
SELECT 
        d.the_geom,
        d.id,
        d.p1,
        d.p2,
        d.p3,
        d.p4,
        d.p5,
        d.p6                  
    
  FROM (SELECT 
                bican_zonas_censales_data.p1,
                bican_zonas_censales_data.p2,
                bican_zonas_censales_data.p3,
                bican_zonas_censales_data.p4,
                bican_zonas_censales_data.p5,
                bican_zonas_censales_data.p6,
                bican_zonas_censales_data.id,
                SDO_UTIL.TO_WKTGEOMETRY(bican_zonas_censales.the_geom) the_geom     
            
  FROM (SELECT 
                       SDO_GEOM.SDO_BUFFER(SDO_AGGR_UNION(SDOAGGRTYPE(bican_areas_influencia.the_geom,0.05)),0,0.05) the_geom            
                    
  FROM bican_areas_influencia
 WHERE 

                        bican_areas_influencia.id_oficina = '#oficina' 
                    
) c
      ,bican_zonas_censales
      ,bican_zonas_censales_data
 WHERE 
       
                        SDO_ANYINTERACT(c.the_geom,bican_zonas_censales.the_geom)
                     AND 
       bican_zonas_censales.gid = bican_zonas_censales_data.id

) d
 WHERE 
       
                        SDO_ANYINTERACT(c.the_geom,bican_zonas_censales.the_geom)
                     AND 
       bican_zonas_censales.gid = bican_zonas_censales_data.id
-- ************************************************************************************
-- DEISTER WebStudio XSQL-SELECT Tue Oct 11 11:21:50 CEST 2011 Engine: postgres
-- ************************************************************************************
SELECT
        d.the_geom,
        d.id,
        d.p1,
        d.p2,
        d.p3,
        d.p4,
        d.p5,
        d.p6                  

  FROM (SELECT              
                bican_zonas_censales_data.p1,
                bican_zonas_censales_data.p2,
                bican_zonas_censales_data.p3,
                bican_zonas_censales_data.p4,
                bican_zonas_censales_data.p5,
                bican_zonas_censales_data.p6,
                bican_zonas_censales_data.id,
                ST_AsText(bican_zonas_censales.the_geom) the_geom     

  FROM (SELECT
                       ST_Buffer(ST_Collect(bican_areas_influencia.the_geom),0) the_geom            

  FROM bican_areas_influencia
 WHERE 

                        bican_areas_influencia.id_oficina = '#oficina' 

) c
       INNER JOIN bican_zonas_censales ON
                        ST_Intersects(c.the_geom,bican_zonas_censales.the_geom)

       INNER JOIN bican_zonas_censales_data ON bican_zonas_censales.gid = bican_zonas_censales_data.id

) d
-- ************************************************************************************
-- DEISTER WebStudio XSQL-SELECT Tue Oct 11 11:21:50 CEST 2011 Engine: sqlserver
-- ************************************************************************************
SELECT 
        d.the_geom,
        d.id,
        d.p1,
        d.p2,
        d.p3,
        d.p4,
        d.p5,
        d.p6                  
    
  FROM (SELECT                 
                bican_zonas_censales_data.p1,
                bican_zonas_censales_data.p2,
                bican_zonas_censales_data.p3,
                bican_zonas_censales_data.p4,
                bican_zonas_censales_data.p5,
                bican_zonas_censales_data.p6,
                bican_zonas_censales_data.id,
                bican_zonas_censales.the_geom.STAsText() the_geom     
            
  FROM (SELECT 
                       -- Tag [geo.aggrUnion] not defined for engine sqlserver.BufferWithTolerance(0,,) the_geom            
                    
  FROM bican_areas_influencia
 WHERE 

                        bican_areas_influencia.id_oficina = '#oficina' 
                    
) c
       INNER JOIN bican_zonas_censales ON 
                        c.the_geom.STIntersects(bican_zonas_censales.the_geom)
                    
       INNER JOIN bican_zonas_censales_data ON bican_zonas_censales.gid = bican_zonas_censales_data.id

) d 

Debajo, hay una lista de las funciones geométricas que están disponibles con la gramática XML:

Informix Datablade Postgres PostGis Oracle Spatial SQLServer Spatial DB2 Spatial Extender
ST_Point        
ST_Line  
St_Polygon  
getType  
getX
getY
getZ
getEnvelope
isValid  
getCoordDim
getDim
getSRID
getNumVertices  
asKml  
asGml
asWkt
asWkb
asSvg
transform    
reverseLine
distanceCartesian  
distanceSphere
distanceSpheroid  
length
lengthSpheroid  
perimeter
area
centroid
withinDist  
equals  
touches
overlaps
covers
coveredBy  
contains
within
intersects  
disjoint
intersection
buffer
simplify  
convexHull
difference
symDifference
aggrUnion  
aggrMbr
aggrConvexHull
GPS tracking

GPS tracking es un renderer layer dirigido a trazar tracks GPS. El input debe estar formado por coordenadas del GPS. El renderer se encarga de conectar las coordenadas con líneas y también dibuja un círculo, representando la precisión de las medidas GPS.

Location tracking

Como muchos de los datos almacenados en una base de datos pueden georeferenciarse, se hace posible analizar cualquier información relacionada en un mapa. Por ejemplo, en caso que los clientes pudieran ver las ventas por área en un mapa junto las ubicaciones geométricas asociadas al cliente y las ventas almacenadas en una tabla de ventas, se pueden ver estas ventas en un map; en vez de utilizar un informe de ventas convencional. Además, se puede realizar zoom del mapa para ver información más detallada e incluso, ver un cliente en concreto y consultar sus facturas.

Asimismo, se pueden implementar Location Based Services (LBS) para móviles Android&153;. El servicio LBS utiliza información geográfica para servir usuarios móviles y proporcionando a las empresas de servicios una manera de mejorar sus operaciones a través de la toma de decisiones basada en información de ubicaciones en tiempo real:

  • Servicio al cliente mejorado
  • Utilización del trabajo de campo incrementado
  • Trabajo de planificación y expedición reducido

Axional mobile LBS proporciona servicios, tales como:

  • Mapas y navegación para usuarios/trabajadores móviles
  • Rastreo de recursos con distribución dinámica: vehículos, gente de servicio, equipos de alquiler y planificación de la flota.
  • Servicios de información: localizar el negocio o servicio más cercano (por ejemplo, buscar el cajero más cercano) y el contenido de usuario generado
  • Notificación basada en la proximidad: lista de favoritos y la publicidad objetivo.

Utilizando los servicios de rastreo de ubicaciones de Axional Mobile, la base de datos recibirá rastreos de la posición de tus usuarios o vehículos que pueden utilizarse para informar sobre cosas, tales como, distancias, tiempo dedicado a un reparto, consulta de clientes sobre la ubicación de una compra, optimización de rutas, etc.

Dispositivos móviles

Los dispositivos móviles Android&153; pueden utilizarse para solicitar y ver información almacenada en nuestras bases de datos o capturar información sobre una ubicación. Además, se pueden colocar en nuestros sistemas.

Bases de datos

Axional Geospatial funciona con:

  • Informix Spatial datablade
  • DB2 Spatial Extender
  • Oracle Spatial
  • Postgres PostGIS

Características clave

  • Diseñador de formularios para solicitar y representar datos alfanuméricos y geo-espaciales
  • Captura de datos desde dispositivos Android&153;
  • Queries espaciales en SQL nativo
  • Gramática independiente XML/SQL PostGIS
  • Herramienta de migración de bases de datos geo-espaciales desde cualquier base de datos soportada