On 12/04/2014 11:11 AM, Ariel wrote:
hola lista estoy tratando de implementar un servidor de mapas, he visto
algunas variantes, pero me haria falta una opinion de aquellos que
quizas ya tengan algo en concreto o conozcan del tema, aqui tenemos
hecho a modo de pruebas un sistema de mapas mediante (.map) y generados
en mapinfo, el cual es privativo, quisiera ver como yo puedo publicar
esos mapas realizados en mapinfo mediante un servidor web al estilo
apache por ejemplo, he visto la variante de mapserver pero lo que he
podido leer al respecto parece que este acepta mapas de tecnologia gis.
en fin algo enredado el tema pero si alguien tuviera informacion al
respecto se lo agradeceria.

gracias de antemano y saludos



Hace algún tiempo como parte de unas conferencias de GeoDjango que di hice un minitutorial de como crear un servidor de mapas con Openstreetmap + Openlayers, es decir importar un mapa de openstreetmap en un server postgres + postgis, generar los tiles con mapnik y servirlos con openlayers + apache.

Te lo envio como referencia pues a lo mejor algunos comandos o enlaces han cambiado.

Saludos,
 Ali

---------------------------------------
* Conferencia I (Introduccion de las aplicaciones y preparacion del sistema)

** Paquetes que se deben instalar
 + osm2pgsql
 + postgresql-9.x-postgis
 + python-mapnik 0.7 o superior (CRITICO!!!)
+ gdal-bin (no es obligatorio pero incluye ogr2ogr y ogrinfo que son esenciales en el trabajo con mapas)


** Preparar la base de datos con soporte geografico
1. Crear la plantilla que se usara en la creacion posterior de las bases de datos
   + su - postgres
   + Creamos la base de dato: createdb template_gis
   + Nos conectamos a la base de datos: psql template_gis
   + Adicionamos el soporte geografico: CREATE EXTENSION postgis;
+ Adicionamos las funciones para datos espaciales: CREATE EXTENSION postgis_topology; + Y la convertimos en una plantilla: update pg_database SET datistemplate='true' where datname='template_gis';
   + \q

 2. Crear la base de datos
   + su - postgres
+ Creamos el usuario que usara la base de datos: createuser -S -D -R -P mapas + Creamos la base de dato usando la plantilla con soporte geografico y especificando el dueño como el usuario creado en el paso anterior: createdb cuba_map --o rodrigo -T template_gis + Probamos que podemos conectarnos a la base de datos con los datos del usuario: psql -h localhost -U mapas -d cuba_map

** Datos de OpenStreetMap (OSM)
 1. Descargar
+ Datos geograficos de Cuba: http://cm-downloads2.s3.amazonaws.com/north_america/cuba/cuba.osm.bz2 + Scripts, Estilos y Simbolos: svn co http://svn.openstreetmap.org/applications/rendering/mapnik
   + No esenciales pero convenientes:
     + http://tile.openstreetmap.org/world_boundaries-spherical.tgz
     + http://tile.openstreetmap.org/processed_p.tar.bz2
     + http://tile.openstreetmap.org/shoreline_300.tar.bz2
+ http://www.nacis.org/naturalearth/10m/cultural/10m-populated-places.zip + http://www.nacis.org/naturalearth/110m/cultural/110m-admin-0-countries.zip + http://www.nacis.org/naturalearth/110m/cultural/110m-admin-0-boundary-lines.zip

2. Preparacion de los datos bases
   + tar xzvf world_boundaries-spherical.tgz
   + cd world_boundaries
   + tar xjvf ../../processed_p.tar.bz2
   + tar xjvf ../../shoreline_300.tar.bz2
   + unzip ../10m-populated-places.zip
   + unzip ../110m-admin-0-countries.zip
   + unzip ../110m-admin-0-boundary-lines.zip
   + cd ..
   + mkdir osm_data
   + mv world_boundaries osm_data
+ cp -a mapnik/{osm.xml,generate_xml.py,generate_tiles.py,inc,symbols} osm_data
   + mkdir cuba_tiles
   + mkdir -p www/js/ol

3. Introduccion en la base de datos de los datos geograficos de Cuba o del pais que se quiera generar, el primero asi y los siguientes agregando el parametro -a (ej: osm2pgsql -U cuba_map -H localhost -d cuba_map -W -m -a -u cuba.osm.bz2)
   + osm2pgsql -U cuba_map -H localhost -d cuba_map -W -m -u cuba.osm.bz2
  -U, -H, -d, -W son los parametros de conexion a la base de datos
-m especifica que se use la proyeccion mercatos (900913) usada por google y OSM
  -u especifica que los textos se lleven a utf8

###########################################################################################
** Generar los tiles
1. Configurar la conexion a la base de datos en los ficheros de estilo de mapnik + ./generate_xml.py --dbname cuba_map --host 'localhost' --user cuba_map --password 'cub4_m4p' --port '5432' osm.xml > cuba_map.xml

2. Determinar el area y los niveles del mapa a generar
    + psql -hlocalhost -U cuba_map cuba_map
    + select extent(way) from planet_osm_line;
                      extent
---------------------------------------------------
 BOX(-9285688.1 2259375.61,-8348962.57 2656784.69)
+ select astext(transform(setsrid(geomfromtext('POINT(-9285688.1 2259375.61)'), 900913), 4326));
                  astext
-------------------------------------------
 POINT(-83.4147554379676 19.8846878381774)
+ select astext(transform(setsrid(geomfromtext('POINT(-8348962.57 2656784.69)'), 900913), 4326));
                  astext
------------------------------------------
 POINT(-75.000006831728 23.2046356630242)
    + \q

cuba = bbox = (-88,14.42,-71.17, 28.08)

###############################################################################
########################IMPORTANTE ############################################# ## repetir estos pasos cada vez que se quiera renderizar un nuevo nivel de zoom
## cuando se ciera la maquina o se pierden las varaibles.
## se puede "pintar" cada  region (pais) del mapa modificando el bbox
3. Generar las imagenes
+ vim o nano /media/datos/compartir/mapas/osm_data/mapnik-styles/generate_tiles.py + Borrar todo a partir de la linea 199 y agregar estas lineas (OJO: mantener la indentacion):
      bbox = (-88,14.42,-71.17, 28.08)
      min_level = 0
      max_level = 14
      render_tiles(bbox, mapfile, tile_dir, min_level, max_level, "Cuba")
    + Salvar el fichero

    + export MAPNIK_MAP_FILE="cuba_map.xml"
    + export MAPNIK_TILE_DIR="../cuba_tiles"
    + ./generate_tiles.py


** TODO Configurar el acceso web
 1. Instalar OpenLayers
   + Descargar la version actual de OpenLayers
   + tar xzvf OpenLayers-2.9.1.tar.gz
   + cd OpenLayers-2.9.1/build
   + ./build.py
   + cd ../www
   + cp ../OpenLayers-2.9.1/build/OpenLayers.js js/ol
   + cp -R ../OpenLayers-2.9.1/theme js/ol
   + cp -R ../OpenLayers-2.9.1/img js/ol


2. Configurar servidor web
   + Apache
   Adicionar las siguientes lineas a alguno de los virtualhosts:
   Alias /tiles/ "/home/ali/cuba_tiles/"
   <Directory "/home/ali/cuba_tiles">
       Options Indexes Multiviews FollowSymlinks
       Allow from all
   </Directory>

   Alias /cuba_maps/ "/home/ali/www/"
   <Directory "/home/ali/www/">
       Options Indexes Multiviews FollowSymlinks
       Allow from all
   </Directory>


3. Crear pagina de prueba
+ crear fichero mapa.html en el directorio www con el siguiente contenido:
<html>
  <head>
    <title>OpenLayers Demo</title>
    <style type="text/css">
      html, body, #basicMap {
          width: 100%;
          height: 100%;
          margin: 0;
      }
    </style>
    <script src="/cuba_maps/js/ol/OpenLayers.js"></script>
    <script>
      function init() {
        map = new OpenLayers.Map("basicMap");
var mapnik = new OpenLayers.Layer.OSM("MyLayer", "/tiles/${z}/${x}/${y}.png", {numZoomLevels: 12});
        map.addLayer(mapnik);
map.setCenter(new OpenLayers.LonLat(-82.3798,23.12248) // Center of the map
          .transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
          ), 12 // Zoom level
        );
      }
    </script>
  </head>
  <body onload="init();">
    <div id="basicMap"></div>
  </body>
</html>
#######################


--
Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/


--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a