Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/webcindario/o/s/osmes/web/common.php on line 135
Programas :: Mapnik
Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Mapnik

Mapnik
Artículo
Responder citando Descargar mensaje    
Mensaje Mapnik 
 
Mapnik es un programa de codigo abierto para renderizar mapas que usamos para hacer los principales Slippy Map capas de OSM.

Mapnik es un servicio gratuito de herramientas para hacer mapas. Está escrito en C + + y de alto nivel incluye enlaces Python. Utiliza la biblioteca y ofrece AGG anti-aliasing renderizado con precisión subpixel. Puede leer las formas de ESRI, PostGIS, TIFF rasters, y cualquier GDAL OGR o los formatos admitidos. Actualmente es más fácil de construir mapnik desde el código fuente en Linux ya que todas las dependencias se pueden obtener fácilmente con apt-get. También están disponibles los binarios para Windows y mapnik se ha incorporado en Mac OS 10.4 y 10.5.

La página oficial es mapnik.org, y los nuevos usuarios pueden aprender más acerca del uso de Mapnik en The Mapnik Wiki y unirse a la #mapnik channel on freenode.

Errores y hacer sugerencias
Por favor, informe de cualquier error, gráfica sugerencias y peticiones de características para hacerlo trac en el marco del componente "mapnik". Por favor, compruebe si el ticket haya sido presentado antes de: trac tickets with component "mapnik"

Informe de problemas, ideas, mejoras sobre Mapnik en general (no la OSM ejemplo) a: http://trac.mapnik.org.


Descripción general
OSM Mapnik utiliza para hacer 256 x 256 px pixeles, que se sirve de la ficha del servidor (tile.openstreetmap.org). El Slippy Map referencia URL JavaScript, como por ejemplo, http://tile.openstreetmap.org/7/63/42.png para esta imagen:

Image

Véase también Slippy map tilenames


Fuentes de datos
Los datos OSM son convertidos a un formato utilizable por Mapnik por osm2pgsql, que las cargas derivadas de datos en una base de datos PostGIS. Además de los usos comunes Mapnik también se basan en forma de archivos al hacer unas pocas capas adicionales. Coastlines, por ejemplo, se crean a partir de datos de Vmap0. Ver Coastline#Main_Mapnik_Layer

Preparación
Este proceso requerirá un poco de espacio en disco si planea sobre la carga de todo el mundo. Cada uno de los países se pueden manejar en cualquier máquina ordinaria, pero para todo el planeta, he aquí algunas indicaciones de los requisitos (al 04 de abril de 2009). Esto no incluye los índices:

Tabla                  Tamaño
carreteras            700MB
línea                    6.25GB
puntos                  469MB
polígono               700MB
caminos                4.87GB
nodos de caminos  16GB

Que asciende a alrededor de 30 GB. Si está utilizando el modo en fino-osm2pgsql también tendrá alrededor de 20 GB para las tablas temporales. Mencionar que probablemente necesite así como los índices, y toda la base de datos cuenta con índices de 61GB!

Si tiene memoria suficiente (> 12 GB), entonces puede intentar ejecutar en modo normal. En una máquina adecuada el proceso debería concluir en 3-4 horas. Si no tiene suficiente memoria, entonces necesita utilizar el modo reducido para trabajar con cualquier cantidad de memoria, le puedes dar. 3GB de memoria RAM para configurar el proceso se ha medido en alrededor de 24 horas, aunque depende en gran medida de su subsistema de disco.

Hay un gráfico que explica el uso de la memoria durante el planeta de importación, en un modo de memoria RAM:

Image

Conjuntos de datos
Aquí hay dos conjuntos de datos necesarios para renderizar los pixeles por lo que seria buena idea para empezar descargar los primeros.

Planet.OSM
Planet.OSM es una captura de la base de datos de OpenStreetMap ver: Planet.OSM

$ wget http://planet.openstreetmap.org/planet-latest.OSM.bz2


Nota: Si desea hacer una pequeña área como una prueba rápida a continuación, puede importar cualquier area. OSM archivo, no es necesario para que todo el planeta. Esto es recomendable si quieren probar rápidamente que es la prestación de trabajo antes de pasar varias horas la descarga de 3GB + y la importación de todo el planeta. Usted puede obtener un adecuado archivo OSM  al descargar y guardar un espacio en JOSM o utilice uno de los más pequeños extractos que figuran en el planeta Planet.OSM#Extracts.


Límites del mundo
Mapnik utiliza los datos externos para las costas de bajo niveles de zoom. ver: Coastline#Main_Mapnik_Layer.

$ wget http://tileserv.openstreetmap.org/world_boundaries-spherical.tgz (50M)
$ wget http://tileserv.openstreetmap.org/processed_p.zip (227M)
$ wget http://tileserv.openstreetmap.org/shoreline_300.tar.bz2 (46M)



Después de descargar y obtener el pack de scripts de mapnik (ver detalles más abajo), hacer un directorio mapnik / world_boundaries y desempaquetar los archivos, pero mover todos los archivos de cualquier subdirectorio que pudieran existir e world_boundaries directamente en el directorio.

PostgreSQL / PostGIS
Mapnik puede utilizar PostgreSQL / PostGIS como su base de datos especial. Para obtener instrucciones sobre cómo instalar y configurar PostgreSQL / PostGIS para su uso con Mapnik, consulte la pagina de instalación Mapnik/PostGIS.

osm2pgsql
osm2pgsql es un convertidor y cargador datos PostgreSQL para Openstreetmap. <br><br> Para instrucciones de instalación, véase osm2pgsql.

Antes de poder utilizar osm2pqsql por primera vez  (véase más adelante), necesita para inicializar los datos de configuración para esta proyección. Para ello, ejecute el archivo Sql incluido con osm2pqsql:

[Syntax on Windows]
$ psql -d gis -f c:\osm2pgsql\900913.sql


También debe asegurarse de que el esquema de base de datos utilizada por osm2pgsql está en sincronía con el Mapnik actúa en una. El esquema se describe en el archivo default.style para osm2pgsql y OSM.xml (resp. OSM-template.xml) para Mapnik. default.style de su paquete osm2pgsql es muy probable que en la fecha de construcción no de des la fuente svn. Por eso, cuando vaya a buscar cosas de OSM Mapnik svn (véase más adelante) también deberá actualizar default.style por ejemplo, a través de repository browser.


Instalación de Mapnik

Para instalar Mapnik, por favor, siga las instrucciones aquí: Mapnik/Installation.

Para obtener más específicaciones sobre los pasos de la instalación de Fedora 10, siga estos pasos: Mapnik/Fedora Installation.

Cargando datos
    
Simplemente llame osm2pgsql (como el usuario que va a correr mapnik):
$ osm2pgsql -m -d gis planet-latest.OSM.bz2


Este proceso requiere grandes cantidades de memoria (por cálculo aproximado, por lo menos 512 MB). Si se queda sin memoria, puede fallar en algo de manera impredecible (por ejemplo, mensajes de lo que sugiere que los errores existen en el archivo OSM). Asegúrese de que tiene suficiente memoria RAM libre y el espacio de intercambio disponible antes de ejecutar osm2pgsql. La opción "-m" permite el uso de la proyección de Spherical Mercator el cual se recomienda. Este es el valor por defecto desde la versión 0.55, SVN r8320. Algunas herramientas antiguas todavía pueden esperar los datos a ser importados en un proyecto como "latlong". Hay opciones de línea de comandos disponibles para seleccionar estas y otros proyectos. El último código osm2pgsql también soporta una simple caja de filtro durante la importación, que hará las cosas mucho más rápido si sólo desea hacer una pequeña parte del planeta. Por ejemplo, si sólo desea importar desde el Reino Unido Londres, el extracto seria:
$ osm2pgsql --bbox -0.5,51.25,0.5,51.75 -m -d gis uk-080213.OSM.bz2


    
Algunos temas que puede encontrar
Si todos los pixeles de su mapa parece estar fuera por 10 - 20 kilometros del Norte-Sur es posible que haya olvidado añadir la "-m" en la opción importación en osm2pgsql. Desde la versión 0.55 el osm2pgsql spherical mercator (m) es el valor por defecto de proyección. Si intenta cargar un archivo Gzip que es más de 2 GB puede dar un error que no se abra el archivo. Esto se debe a un error en algunas versiones de zlib, que no hayan facilitado a la O_LARGEFILE (). La solución es utilizar un proceso externo gzip que no sufren este problema. Especifique el nombre del archivo "-" osm2pgsql hará que la lectura de los datos de STDIN.

$ gzip -dc planet-080213.OSM.gz | osm2pgsql -m -


Puede recibir este error después de comenzar:

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
  failed: ERROR:  AddGeometryColumns() - invalid SRID
CONTEXT:  SQL statement "SELECT AddGeometryColumn('','', $1 , $2 , $3 ,
$4 , $5
)"
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement


Esto significa que el proyecto no ha sido inicializado y lo que necesita para ejecutar 900913.sql en el osm2pgsql carpeta.Después de varias horas, la importación se puede cerrar con un error como:

ANALYZE planet_osm_line;
 failed: ERROR:  deadlock detected
DETAIL:  Process 28511 waits for AccessExclusiveLock on relation 1064115 of database 18309; blocked by process 12776.
Process 12776 waits for ShareLock on transaction 572766655; blocked by process 28511.

Error occurred, cleaning up


Esto parece ser un fallo en algunas versiones de PostgreSQL y se produce cuando se intentó un autovacuum  durante el ANALYZE. La solución es desactivar todos los autovacuum  en la base de datos. Los datos no se actualiza después de la importación de vacío por lo que el proceso no hace nada útil. En el conjunto de archivos postgresql.conf la opción:

autovacuum = off


A continuación, reinicie el servidor de base de datos

# /etc/init.d/postgresql-8.1 restart


Nota: En Debian/Ubuntu también necesita  actualizar /etc/ cron.d/postgresql-common a comentar las dos pg_maintenance tareas que de otra causa que se produzcan vacuums en intervalos regulares:

# Run VACUUM ANALYSE on all databases every 5 hours if pg_autovacuum is not
# running
# 2 0,5,10,15,20 * * 1-6 root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --analyze >/dev/null; fi

# On Sunday you may wish to run a VACUUM FULL ANALYSE as well
# If you do not run a 24/7 site, you may want to uncomment the next line
# so as to do a regular VACUUM FULL.  If you need 24/7 connectivity, save
# VACUUM FULL for when you think you really need it.
# 10 3 * * Sun root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --full --analyze >/dev/null; fi


No se olvide de volver a ellas si está haciendo cualquier cosa con postgres, o degradar el rendimiento lentamente.

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: ERREUR:  droit refusé pour la relation geometry_columns
CONTEXT:  instruction SQL « DELETE FROM geometry_columns WHERE
        f_table_catalog = '' AND f_table_schema = 'public' AND f_table_name = 'planet_osm_point' AND f_geometry_column = 'way' »
PL/pgSQL function "addgeometrycolumn" line 94 at EXECUTE statement
instruction SQL « SELECT AddGeometryColumn('','', $1 , $2 , $3 , $4 , $5 ) »
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement

Error occurred, cleaning up


El usuario no está autorizado a modificar la base de datos GIS. Usted tiene que ejecutar osm2pgql como el usuario que ha creado en la configuración de base de datos PostgreSQL.

Si no puede conectarse a postgres psql con el comando:

$ psql -W gis username
 psql: FATAL:  Ident authentication failed for user "username"


    
Incluso después de que haya establecido la contraseña para el usuario:

$ sudo -u postgres -s -H
 postgres@aoeu$ psql
 Welcome to psql 8.3.5, the PostgreSQL interactive terminal.
 ALTER ROLE username PASSWORD 'mypassword';


Puede que tenga que añadir usted las siguientes líneas pg_hba.conf (crear e.g. en /etc/postgresql/8.3/main):

local   all         all                               trust  
 host    all         all         127.0.0.1/32          trust


De modo que usted puede utilizar la autenticación de la contraseña desde localhost. Tenga en cuenta que es posible que tenga que comentar alguna de las líneas existentes a partir de todos los locales o todo del host . Comentar la siguiente sección en Ubuntu 8.10:

# "local" is for Unix domain socket connections only
#local   all         all                               ident sameuser
# IPv4 local connections:
#host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128               md5


Renderizar con Mapnik
Descomprima coastlines y el lowzoom y datos que ha descargado anteriormente:

$ cd ~/mapnik
$ tar xzf world_boundaries-spherical.tgz
$ unzip processed_p.zip
$ mv coastlines/* world_boundaries/
$ rmdir coastlines
$ tar xjf shoreline_300.tar.bz2 -C world_boundaries


    
Lo anterior debe salir con todos los shapefiles world_boundaries en el directorio.

Pedido Mapnik las cosas desde el repositorio de subversión OSM:

$ svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik
$ cd mapnik


Crear una copia local de los scripts "set-env-mapnik" y edítelo según sus nombres de archivo locales, nombre de la base de datos, la ubicación de la carpeta, etc .Todos los ajustes se documentan en este script. Cree el archivo de OSM.xml-OSM template.xml llamando a:

$ . ./set-mapnik-env     # note the . !
$ ./customize-mapnik-map >$MAPNIK_MAP_FILE


(Nota: la versión más reciente de la serie-env-mapnik ha "exportación MAPNIK_DBNAME = 'OSM'" mientras que las instrucciones ya se ha mencionado la creación de DBNAME como "gis". Si utiliza mal DBNAME, el cambio en conjunto-mapnik-env vuelva a ejecutar-personalizar-mapnik mapa.) Usted puede decidir qué áreas renderizar  mediante el establecimiento de cajas y limitan los niveles de zoom en generate_(tiles|imagen).Py


Opcional: fuente de soporte CJK

Actualmente, la hoja de estilos OSM.xml y fuentes mapnik no incluyen soporte para caracteres CJK (chino, japonés, coreano, et. Al., o más generalmente el Este de Asia). Para añadir el soporte que usted necesita ha de hacer lo siguiente:

  1. Descargar GNU Unifont Glyphs
  2. Descomprima, y poner el archivo .ttf  en /usr/local/lib/mapnik/fonts (o ruta apropiada) con el directorio Mapnik otras fuentes.
  3. Modifique el .xml. Remplace face_name="DejaVu Sans Book" con fontset_name="DejaVu Sans Book".
  4. Añadir la fuente para establecer el estilo de emergencia:

<FontSet name="DejaVu Sans Book">
<Font face_name="DejaVu Sans Book" />
<Font face_name="unifont Medium" />
</FontSet>


Repita para Bold y Oblique.

Interpretación

Usted ahora puede llamar:
$ ./generate_tiles.py


generate_tiles.py genera baldosas que pueden ser atendidas por un servidor. (Mira en el interior del archivo para saber qué zona del planeta que se hacen por defecto y en lo que el zoom. Puedes buscar BBOX y minutos, como máximo el zoom. Si desea seleccionar un área diferente ir a openstreetmap.org y haga clic en la "exportación "ficha y, a continuación," seleccionar manualmente un área diferente. "Dibujar la zona que desee y, a los cuatro cuadros de texto se muestran los valores que se debe proporcionar en una secuencia [izquierda, abajo, derecha, arriba]). Si usted tiene varios núcleos de máquinas, para acelerar la generación de baldosas, se puede dividir un espacio para, por ejemplo, cuatro plazas y ejecutar algunos casos en el mismo tiempo. Más velocidad mejoras son posibles por la reducción de E / S de disco cuellos de botella (iowait tiempo). Estos cuellos de botella, por ejemplo, puede ser encontrado con iofile.d; en Mac OS X devuelve Spotlight, y Postgress estadísticas colector paralelo como disco i / o consumidores.  o

$ ./generate_image.py


generate_image.py genera una imagen única para una determinada zona. Es decir, que, esencialmente, las zonas se unen en una sola gran imagen. Esto puede ser útil para las personas que quieren cubrir sólo un área limitada y, por tanto, desea guardar la molestia de manipulación de las zonas.


Solución de problemas de azulejos

Hay varios posibles problemas que puede encontrar en su renderización de mapas:

 1. Si el mapa o la imagen generada mostrar las coastlines, pero carecen de calles, nombres de calles, ciudades, y otras características, compruebe que el usuario puede tener acceso a la base de datos. Los scripts y mapnik tranquilamente dejar de leer los datos y, por tanto, hacer con las coastlines, pero sin otros datos. Otra causa es la construcción de PostGIS mapnik sin soporte.

2. La versión de los dos últimos guiones actualmente en svn es para su uso con mapnik 0,5 y obtendrá algunos errores si intenta volver a utilizarlo con una versión anterior. (Estos scripts pueden tratar de invocar la "conversión" del programa. Puede que necesite instalar ImageMagick o optar por no utilizar «convertir».)

 3. Si los nombres de los lugares de Asia aparecen como bloques en lugar de caracteres normales y, a continuación, pruebe con otro tipo de letra en su archivo OSM.xml (véase el grupo-env-mapnik). AR PL ShangHeiSun Uni regular parece funcionar bien en Linux. Puede ser localizado en /usr/share/fonts/chino/TrueType/uming.ttf. Copie este fichero en su directorio de fuentes mapnik (probablemente, /usr/local/lib/mapnik/fonts, pero mira en paths.py de la extensión Mapnik Python).


La reducción de espacio en disco

Si usted está haciendo toda la tierra (es decir, BBOX = (-180,0, -90,0, 180,0, 90,0)) hay algunas cosas que puede hacer para reducir drásticamente el uso de espacio en disco.

1. Compruebe que sólo tienen las zonas que va a utilizar.

          
  • Por ejemplo, el máximo x e y los valores de zoom de 10 son 1023. Así, la última teja debe TILEDIR/10/1023/1023.png.
              
  • Sin embargo, usted puede tener zonas con x e y valores más allá de eso. ( valores en torno a 1300)
              
  • Eliminar los primeros de cada nivel de zoom.


    2. A mayores niveles de zoom (8 o así), muchas baldosas se duplican (por ejemplo, vacía los océanos y lagos, y áreas de tierra sin características).

          
  • En sistemas operativos de soporte, puede crear enlaces simbólicos con un conjunto de agua en blanco y las zonas del suelo.


Ejemplo de ahorro (athlon02):

    1. En 9 de zoom, el espacio de disco utilizado fue de 3,8 GB (si la memoria no sirve). Ahora es 1,4 GB.
    2. Zoom en 10, el espacio de disco utilizado fue 12a-13o GB para empezar. Ahora es 4,58 GB.
    3. Su kilometraje puede variar.


Personalización de la prestación

Ahora que tiene la representación estándar de estilo de trabajo puede comenzar a personalizar su mapa.

Contornos

Es posible añadir a su mapa de contornos, como la ha cyclemap, los contornos se basan en el dominio público SRTM (Shuttle Radar Topograhy Misión) de la NASA. También es posible añadir hillshading coloración y elevación de su mapa sobre la base de los mismos datos.

Stylesheet

La hoja de estilos es un documento XML control de la mayoría de los aspectos de cómo las características son aproximados, como el color y el ancho de las líneas que muestran los diferentes tipos de carreteras. El formato no es muy compacto y fácil de entender, pero otorga un gran poder y la flexibilidad. La versión que utilizamos en la vida Slippy mapa es probablemente el archivo de la OSM.xml SVN head: aplicaciones/renderizado/mapnik/OSM.xml. Mapnik por ejemplo para ver un estilo más sencillo.

Sintaxis es la hoja de estilos especificada aquí: XMLConfigReference. MinScaleDenominator y MaxScaleDenominator especificar el mínimo y máximo de las escalas en la que cada símbolo / característica debe ser prestado.

Puedes jugar con las hojas de estilo en línea mapnik aquí: http://tile.openstreetmap.nl/~panman/styledit/

Ver Cascadenik y Spreadnik si va a desarrollar complejas hojas de estilo.
Regionalizado hacer de los nombres

Para hacer nombre: * los nombres en lugar de los nombre de las etiquetas que a la disponibilidad de preproceso puede modificar los datos o la base de datos PostGIS después.



 
Desconectado Ver perfil del usuario Enviar mensaje privado  
 Yodeima [ 03.08.2009 23:11 ]


Mapnik
Comentarios
Mostrar mensajes anteriores:
Ocultar¿Este tema fue útil?
Compartir este tema
blinkslist.com blogmarks.net co.mments.com del.icio.us digg.com newsvine.com facebook.com fark.com feedmelinks.com furl.net google.com linkagogo.com ma.gnolia.com meneame.net netscape.com reddit.com shadows.com simpy.com slashdot.org smarking.com spurl.net stumbleupon.com technorati.com favorites.live.com yahoo.com DIGG ITA Fai Informazione KiPapa Ok Notizie Segnalo Bookmark IT
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 




 



 

cron