Sistema de Información Geográfico en el Observatorio Productivo Venezolano.

La representación de datos en sistemas de información geográfico ejecutados bajo plataformas web, implica como aspecto fundamental: el tiempo de respuesta a las solicitudes requeridas por los usuarios; ello, sujeto a los servicios de transferencia donde se encuentren alojados y las herramientas de desarrollo utilizadas para la implementación en la capa de interfaz. La comunidad de desarrollo en software libre, para atender esta requerimiento, ofrece el lenguaje de programación Python y en él, los framework Django y GeoDjango, este último con funcionalidades para el acceso a bases de datos georreferenciadas en el manejador Postgresql y con el complemento PostGis; siendo utilizados en sitios web con servicios de mapas destacados por su versatilidad en funcionalidades, aunado a la utilización por comunidades extensas. El desarrollo actual del proyecto Observatorio Productivo Venezolano, en el módulo Sistema de Información Geográfico -que involucran todas estas herramientas-, ejecutado por la Fundación Cenditel, ha programado como punto de acceso a información georreferenciada: por medio de claves primarias del tipo texto que identifican en forma única los datos representativos de las poligonales regionales, (o puntos de conexión de las fronteras que demarcan la división territorial). Sin embargo, el framework de desarrollo GeoDjango presenta funcionalidades para correlación de datos en formato Geojson, con las cuales permite construir consultas con distinción de puntos en la región, procurando que el acceso sea expedito.

El objetivo de este trabajo es presentar a la comunidad de desarrollo de software libre en Venezuela, las funcionalidades del framework GeoDjango, para la representación de indicadores en Mapas de densidad, cuyos tiempos de respuesta se ubiquen dentro de los estándares w3c establecidos (www.w3.org).

El procedimiento para crear una base de datos que contienen las poligonales de las regiones, en el manejador Postgresql junto con el complemento PostGIS, se debe ejecutar el comando desde una terminal:

createdb -T template_postgis nombrebasededatos

Para crear un proyecto en el framework Django, desde la misma terminal:

django-admin.py startproject nombredelproyecto

 Se debe sustituir en los comandos los nombrebasededatos y nombredelproyecto con los de determinados en sus requerimientos, para este documento utilizaremos nombrebasededatos = geodb y nombredelproyecto = geodjango.

Con el comando de django-admin.py el framework crea una estructura de directorios para desarrollar el proyecto conformado por aplicaciones o módulos, por lo que debemos ejecutar desde la terminal los siguientes comandos:

cd geodjango

python manage.py startapp modulo

Para nuestro documento, en el comando sustituiremos la palabra modulo por pais

Configuremos el settings.py, para establecer la conexión entre el proyecto y la nueva base de datos, se edita el archivo y en la sección de base de datos, se debe colocar:

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.contrib.gis.db.backends.postgis’,

‘NAME’: ‘geodjango’,

‘USER’: ‘administrador’,

}

}

En el mismo archivo settings.py en la sección de aplicaciones instaladas debemos colocar

INSTALLED_APPS = (

‘django.contrib.admin’,

‘django.contrib.auth’,

‘django.contrib.contenttypes’,

‘django.contrib.sessions’,

‘django.contrib.messages’,

‘django.contrib.staticfiles’,

‘django.contrib.gis’,

‘pais’

)

Guardar el archivo settings.py con los cambios, e ir a la aplicación para construir el modelo de la base de datos. Como hemos comentado el formato que hemos seleccionado para almacenar los polígonos es en GeoJson, por lo cual debemos editar el archivo models.py en el directorio pais y colocar las siguientes instrucciones:

#pais/models.py

from django.db import models

from django.contrib.gis.db import models

class Estados(models.Model):

   gid = models.AutoField(primary_key=True)

   cod_estado = models.CharField(max_length=80)

   estado = models.CharField(max_length=80)

   geom = models.MultiPolygonField()

 def __str__(self):

   return (“Estado: %s”, self.estado )

 class Meta:

   db_table = ‘estados’

#fin

El archivo contiene un campo de identificador autoincremental como clave única de cada registro, así como todos los campos de tipo texto que se requieran, en este caso un código de cada estado y el nombre de los mismos, así como el campo que almacena la geometría del polígono. Se requiere sincronizar con la base de datos para crear la tabla, ejecutando el siguiente comando en la terminal:

python manage.py migrate

Con la creación de la tabla ya podemos utilizar el conjunto de funcionalidades que presenta GeoDjango, para acceder a los datos Georreferenciados, por ejemplo filtrar los registros dado un punto en el mapa, para comprobar no apoyamos en el interpretador de comandos que provee el framework ejecutando desde el terminal la siguiente instrucción:

python manage.py shell

 Definimos un punto, según sus coordenadas:

>>> from django.contrib.gis.geos import Point

>>> punto = Point(-95.3385,29.7245)

Y filtramos el estado que lo contiene:

>>> from pais.models import Estados

>>> estado = Estados.objects.filter(geom__intersects=punto)

>>> print estado

<<Estado: Merida>>

Se puede utilizar el método get de la clase models, para ejecutar la consulta de un registro y presentar en el formato geojson el campo que contiene la poligonal representativa de la frontera del estado, o ver si la poligonal contiene el punto.

>>> estado = Estados.objects.get(estado=’Merida’)

>>> estado.geom.geojson

‘{ “type”: “MultiPolygon”, “coordinates”: [ [ [ [ …

>>> estado.geom.contains(punto)

True

Para los Mapas de densidad se debe seleccionar un conjunto de colores y/o tonalidades, que representen el grado de ocurrencia en determinada región, diferenciándola entre las demás, esto es, la relación entre la consulta que arroja un valor numérico y la ubique en el rango estipulado, debe asignar el valor correspondiente al campo color.