Programación SIG

martes, septiembre 12, 2006

No más ArcObjects por ahora

Sé que debo terminar esa serie interminable sobre ArcObjects, por lo menos hay un par de personas que me lo han comentado y tienen razón. No es por poner excusas, pero prefiero esperar a que la versión 9.2 de ArcGIS esté en el mercado. Sin entrar en detalles, la considero lo suficientemente importante como para esperar a su lanzamiento, porque algunos planteamientos que tenía pensado contar sobre ArcGIS Engine y sobre todo sobre ArcGIS Server cambian bastante.

Enlazando con un post anterior sobre la gran cantidad de novedades, más de uno puede pensar "oh, no, esto vuelve a cambiar". Realmente pienso que en este caso para bien. A nadie que se haya enfrentado a ArcGIS Server se le escapa que es un sistema muy potente, pero que había que desarrollar mucho. Si, si, lo he dicho en pasado, porque a partir de ahora muchas cosas serán más sencillas y más potentes.

En el caso de ArcGIS Server, hay muchas novedades que sin duda es necesario conocer y estudiar, pero que una vez asimiladas hacen el trabajo más productivo por un lado, y con muchas más posibilidades de integración además. Este software quizás no ha sido entendido bien todavía por todo el mundo, porque mucha gente lo ha identificado con un "ArcMap en la web", cuando bajo mi punto de vista su filosofía es otra: ofrecer servicios de forma estándar, e integrarse con otros sistemas de información gracias al despliegue de SOA (Service Oriented Architecture o Arquitecturas Orientadas a Servicios). Es decir, integrar la inteligencia geográfica en las organizaciones, complementando la toma de decisiones y aportando el estudio de la variable espacial a los Sistemas de Información.

Ah, por el camino sigue ofreciendo muy vistosos visores de mapas y toda la funcionalidad de un SIG, en esta ocasión en la web. Cuando salga a la calle la 9.2, publicaré en este blog algunos truquillos relacionados con las novedades más interesantes.

Para aquellos que estén interesados en las primicias, en la Conferencia de Usuarios ESRI España 2006 hay dos charlas previstas monográficas de ArcGIS Server, se puede consultar la agenda en http://www.esri-es.com/esri2006/conferencia/agenda.htm. Los abstract de las dos charlas a las que me refiero se encuentran en las siguientes URL:

Despliegue de aplicaciones y servicios con ArcGIS Server
http://www.esri-es.com/esri2006/conferencia/agenda4/esri_2a2.htm

Desarrollo con ArcGIS Server
http://www.esri-es.com/esri2006/conferencia/agenda5/esri_5b2.htm

Para los que quieran ver algo más bonito y divertido, pero también de gran potencia, pueden probar con la charla de ArcGIS Explorer

http://www.esri-es.com/esri2006/conferencia/agenda5/esri_3b2.htm

Además de estas, hay otras charlas muy interesantes, por supuesto, el asistir a unas u otras ya depende de los intereses de cada uno.

viernes, septiembre 08, 2006

Instalación Mapserver en Linux

Rebuscando en el disco duro, he dado con este documento que generé hace un par de años. No contempla las últimas versiones, pero puede servir de guía para alguien.

INSTALACIÓN DE UN SERVIDOR DE MAPAS OPEN SOURCE BASADO EN MAPSERVER EN SISTEMAS LINUX

1. Requisitos previos
Para instalar Mapserver en Linux, necesitaremos compilar los fuentes del programa, así como las librerías necesarias para su funcionamiento. Por lo tanto, el sistema ha de tener instalado el compilador de C GNUCompiler (gcc), se recomienda una versión actual, y también el programa MAKE para generar el script de instalación. Estos programas son bastante estándar y vienen incluídos en todas las distribuciones actuales de Linux. Por otro lado, ya que vamos a servir mapas por internet, será necesario tener un servidor web, la opción lógica y más recomendable es Apache. Mapserver se compilará como un script CGI que Apache utilizará para procesar las peticiones de mapas.

2. librerías necesarias
Las librerías necesarias para que funcione Mapserver son GD (librería de gráficos) y poco más, puesto que el resto son opcionales. Sin embargo, la funcionalidad queda muy pobre si no instalamos al menos las de uso más común. Nosostros hemos instalado las siguientes:

- GD : instalada con el sistema operativo (opción recomendada), en nuestro caso SUSE 9.1 Professional
- PROJ4: librería que permitirá la reproyección de datos al vuelo, si los datos que se le solicitan a Mapserver no están en el mismo Sistema de Proyección. Evidentemente se produce una penalización en el rendimiento, pero es una opción interesante debido a su flexibilidad, sobre todo si pensamos en servicios OGC Web Map Service en "cascada".
- GDAL & OGR : permite manejar multitud de formatos tanto vectoriales como ráster, es una librería estándar de uso muy común.
- PostGIS: necesaria si queremos tener un servidor con este formato espacial. En teoría sólo es necesario tener instaladas las librerias cliente de PostgreSQL para poder acceder a un servidor de datos Postgis, pero hemos preferido instalar la base de datos en el mismo servidor que atiende las peticiones de mapas.
- CURL : librería de utilidades de transferencia de información a través de la web.

3. Instalación de librerías

GD.
En este caso, simplemente hemos instalado el paquete binario que venía con nuestra distribución. Esto puede variar de una distribución de Linux a otra, en SUSE es muy sencillo realizarla mediante el uso de YAST2.

PROJ4.
Esta librería la descargamos de internet (http://proj.maptools.org/) y la compilamos e instalamos a mano. Para ello ejecutamos los comandos estándar de instalación de programas en Linux

tar -zxvf proj-4.4.8.tar.gz
cd proj-4.4.8
./configure
make
make install (como root)

Para comprobar que hemos instalado correctamente la librería, escribimos en un terminal proj, deberíamos obtener una respuesta similar a la siguiente:

Rel. 4.4.8, 3 May 2004
usage: proj [ -beEfiIlormsStTvVwW [args] ] [ +opts[=arg] ] [ files ]

GDAL & OGR.
Descargaremos la librería GDAL de internet (http://gdal.org/dl/) y realizaremos una instalación estándar :

tar -zxvf gdal-1.2.3.tar.gz
cd gdal-1.2.3
./configure
make
make install (como root)

POSTGIS.

Esta es la instalación más larga y compleja, porque vamos a instalar un servidor de datos PostGIS completo. Para ello lo mejor es leer el manual de instalación de PostGIS, presentamos aquí un resumen del proceso de instalación, dividido en tres partes:

1)Instalación de librerías necesarias
PostGIS puede hacer uso de la librería PROJ4 para proyectar datos almacendados en la base de datos y de la librería GEOS para implementar funciones de SIG (Buffer, Union, etc.) según el estándar OGC Simple Features for SQL.
La librería PROJ4 ya la hemos instalado en un paso anterior. Procederemos a instalar la libreria GEOS (http://geos.refractions.net/) . Primero la descomprimimos, viene en formato bz2. Para esto, hemos utilizado el navegador de arcvhivos konqueror, instalado con nuestra distribución de linux. Posteriormente realizamos una instalación estándar:

./configure
make
make install (como root)

2) Instalación del servidor de base de datos PostgreSQL (http://www.postgresql.org/)
Aunque nuestra distribución de Linux incorpora esta base de datos, la tenemos que instalar desde código fuente porque es necesario tener el árbol de instalación para parchear posteriormente la base de datos con la extensión espacial PostGIS.

Para instalar la base de datos con soporte para GEOS, realizaremos un link explícito entre PostgreSQL y la librería estándar de C++, para evitar problemas. El procedimiento de instalación será el siguiente:

LDFLAGS=-lstdc++ ./configure --enable-debug
gmake check (opcional, realiza test de regresión de la instalación y del funcionamiento del servidor de base de datos)
gmake
gmake install (como root)

Además, tendremos que poner la siguiente variable de entorno en el fichero .bashrc (o equivalente):

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

También podemos ejecutar el siguiente comando (como root):
/sbin/ldconfig /usr/local/pgsql/lib

Por último, hay que añadir la ruta de los ejecutables a la variable de entorno PATH. Esto último no es imprescindible para el funcionamiento del servidor de base de datos pero resulta más cómodo, para poder acceder desde cualquier directorio

PATH=/usr/local/pgsql/bin:$PATH
export PATH

Creamos una cuenta de usuario que maneje el servidor postgres (usualmente postgres)

mkdir /usr/local/pgsql/data (directorio donde se almacenarán los datos)

Como root:

mkdir /home/postgres
adduser postgres -d /home/postgres
chown postgres /usr/local/pgsql/data

Como postgres:

initdb -D /usr/local/pgsql/data
postmaster -i -D /usr/local/pgsql/data
createdb (creamos base de datos sig
psql (conectamos a la base de datos de prueba)


3) Instalación de la extensión espacial PostGIS.

Descargamos la librería postgis de internet (http://postgis.refractions.net/) y la descomprimimos:

tar -zxvf postgis-0.9.0.tar.gz

A continuación movemos el directorio postgis-0.9.0 al directorio contrib del árbol de código fuente de PostgreSQL. Una vez dentro de este directorio, ejecutamos como root:

make
make install

Como usuario postgres, desde el directorio de postgis:

psql -f postgis.sql -d
psql -f spatial_ref_sys.sql -d

CURL
Hemos instalado la librería que venía con nuestra distribución.

4. Instalación de mapserver (http://mapserver.gis.umn.edu/)
Una vez descargado de internet, lo descomprimimos:

tar -zxvf mapserver-4.2.4.tar.gz
cd mapserver-4.2.4

Existen varias opciones de configuración para la compilación de mapserver. Todas ellas vienen explicadas en el archivo README.CONFIGURE que se encuentra en el directorio de configuración e instalación. Nosotros hemos utilizado el siguiente comando:

./configure --with-proj --with-gdal --with-ogr --with-postgis=/usr/local/pgsql/bin/pg_config --with-wfs --with-wmsclient --with-wfsclient --with-curl-config
make

Para realizar la instalación en Apache, copiamos el archivo mapserv en el directorio cgi-bin del servidor web. Con esto queda instalado y configurado mapserver con las opciones que hemos elegido. Para servir mapas a través de la web tan sólo necesitaremos crear un fichero .map que configure las capas a servir, formatos, etc.