ES:Osmosis

From OpenStreetMap Wiki
Jump to: navigation, search
Idiomas disponibles — Osmosis
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tagalog · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · भोजपुरी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ‎ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Sub pages
Instalación
Instalación rápida (Windows)
Guía de uso
Ejemplos
Benchmarking / Tuning
Desarrollo
Plugins

Osmosis es una aplicación Java para procesado de datos OSM mediante una interfaz de línea de comandos. Se trata de una herramienta compuesta por una serie de componentes que pueden encadenarse para llevar a cabo operaciones complejas. Por ejemplo, determinados componentes permiten leer / escribir bases de datos y archivos, otros permiten detectar o aplicar cambios a los conjuntos de datos, ordenar los datos, etc. La herramienta se ha desarrollado de manera que permita añadir fácilmente nuevas funcionalidades, sin tener que reescribir tareas habituales como las relativas a la gestión de archivos y bases de datos.

A continuación se dan algunos ejemplos de las tareas que Osmosis permite llevar a cabo:

Osmosis también puede incluirse como una biblioteca dentro de otras aplicaciones Java.[1]

Estado actual

Osmosis se encuentra en un estado en el que es poco probable que la mayor parte del código base pueda cambiar demasiado. Se irán añadiendo nuevas funcionalidades y plugins, sin eliminar las ya existentes. Cualquier información sobre errores de la aplicación es bienvenida.

La versión más reciente solo admite el modelo de datos de la API 0.6 de OSM .

Descarga

Última versión estable

Siempre que sea posible, se recomienda utilizar las versiones estables que se detallan a continuación.

Soporte para la API 0.5

La versión 0.35 fue la última que admitía la API 0.5.

Esquema de la BD

(verOsmosis/PostGIS_Setup)

Los scripts de creación del esquema de bases de datos para cada versión de la API se facilitan como parte de los archivos de distribución de Osmosis, en el directorio script/contrib.

Los scripts de creación de esquemas pg_simple y pg_snapshot de PostGIS (a partir de la versión 0.39 de Osmosis) se facilitan como parte de los archivos de distribución de Osmosis, en el directorio script.

Código fuente

El repositorio Git se encuentra alojado en: https://github.com/openstreetmap/osmosis

(Más información en la subpágina de instrucciones Osmosis/Installation)

Instalación

Linux

Siga las instrucciones detalladas en Osmosis/Installation#Linux

OS X

Siga las instrucciones detalladas en Osmosis/Installation#OS X

Windows

Siga las instrucciones detalladas en Osmosis/Instalación rápida (Windows). Desde octubre de 2015, es necesario modificar manualmente el archivo osmosis.bat, para lo cual se dan las instrucciones pertinentes.

Instrucciones de uso

Guía para principiantes

Quienes comiencen a trabajar con Osmosis deben tener en cuenta los siguientes aspectos:

  • Osmosis es una herramienta Java, así que puede ser necesario tener ciertos conocimientos sobre java environmental settings,
  • el orden en que se introducen los argumentos de las funciones importa,
  • para evitar problemas, se aconseja no procesar archivos comprimidos,
  • se aconseja comenzar echando un vistazo a examples first, ya que la guía detallada de uso puede resultar demasiado compleja para principiantes.

Guía de uso detallado

La descripción completa de todas las funciones y cómo usarlas está disponible en los siguientes enlaces:

Se puede acceder a las guías de uso para versiones anteriores desde los siguientes enlaces:

Para mejorar el rendimiento, se aconseja consultar Tuning y Benchmarking.

También hay disponible una interfaz de usuario para Osmosis, denominada OSMembrane.

Ejemplos de uso

(Más en la subpágina Osmosis/Examples.)

Ejemplo de cómo extraer datos de los radares existentes en un área determinada:

osmosis --read-pbf \myregion.pbf --node-key-value keyValueList="highway.speed_camera" --write-xml radar.osm 

Si deseásemos extraer todas las carreteras, utilizaríamos los parámetros para filtro de etiquetas de la siguiente manera:

osmosis --read-xml city.osm --tf accept-ways highway=* --used-node --write-xml highways.osm

La sentencia anterior permite extraer las vías que tienen determinadas etiquetas. Al incluir el parámetro --used-node, la extracción contendrá únicamente nodos pertenecientes a las vías resultantes del filtro anterior. Las relaciones permanecen intactas.

El siguiente ejemplo tendrá como resultado un archivo con las vías etiquetadas railway=tram o railway=tram_stop.

osmosis --read-xml city.osm --way-key-value keyValueList="railway.tram,railway.tram_stop" --used-node --write-xml city_tram.osm

Ejecutar estas sentencias en archivos de gran tamaño (por ejemplo un archivo planet), puede interpretarse como una violación de acceso, debido a limitaciones de memoria. En este caso, pasar idTrackerType=BitSet como parámetro de --used-node puede ser de ayuda:

osmosis --read-xml city.osm --way-key-value keyValueList="railway.tram,railway.tram_stop" --used-node idTrackerType=BitSet --write-xml city_tram.osm

Si quisiéramos extraer todas elementos en base a una etiqueta, exceptuando determinados valores de esa etiqueta, utilizaríamos el comando reject. En el siguiente ejemplo se extraen todas las carreteras, excepto las que tengan los valores de motorway o motorway_link:

osmosis \
  --read-xml input.osm \
  --tf accept-ways highway=* \ 
  --tf reject-ways highway=motorway,motorway_link \
  --tf reject-relations \
  --used-node \
  --write-xml output.osm

A continuación se muestra cómo exportar un archivo planet desde una base de datos local PostgreSQL:

osmosis --read-apidb host="x" database="x" user="x" password="x" --write-xml file="planet.osm"

Para generar el change set entre dos archivos planet, se utilizaría el siguiente comando. El primer archivo planet ("planet1.osm") sería el archivo resultante una vez realizados los cambios; el segundo archivo ("planet2.osm") sería el que existía antes de haberlos realizado.

osmosis --read-xml file="planet1.osm" --read-xml file="planet2.osm" --derive-change --write-xml-change file="planetdiff-1-2.osc"

Para generar el change set que permita identificar los cambios entre un archivo planet y una base de datos local PostgreSQL habría que ejecutar los siguientes comandos:

osmosis --read-xml file="planet1.osm" --read-apidb host="x" database="x" user="x" password="x" --derive-change --write-xml-change file="planetdiff-1-2.osc"

Para aplicar un change set a un archivo planet se usarían los siguientes comandos:

osmosis  --read-xml-change file="planetdiff-1-2.osc" --read-xml file="planet1.osm" --apply-change --write-xml file="planet2.osm" 

o bien, para versiones antiguas de la API:

osmosis  --read-xml file="planet1.osm" --read-xml-change file="planetdiff-1-2.osc" --apply-change --write-xml file="planet2.osm" for the older version

Para ordenar el contenido de un archivo planet:

osmosis --read-xml file="data.osm" --sort type="TypeThenId" --write-xml file="data-sorted.osm"

Todos los ejemplos anteriores utilizan una conexión estándar de tipo pipe. Esta conexión funciona siempre que cada tarea se especifique en el orden correcto, teniendo en cuenta que el resultado de cada tarea es necesario para poder llevar a cabo la siguiente. Esta es la razón por la que, en los ejemplos anteriores, para aplicar conjuntos de cambios es necesario leer los datos del archivo que deseamos actualizar y del archivo de change sets de forma previa a ejecutar el comando "--apply-change".

Es posible utilizar otra pipe que no sea la estándar. En el ejemplo siguiente, se muestra una misma tarea utilizando (en primer lugar) la pipe estándar, y en segundo lugar una pipe que conecta explícitamente dos archivos, a la que hemos llamado "mypipe".

osmosis --read-xml file="planetin.osm" --write-xml file="planetout.osm"
osmosis --read-xml file="planetin.osm" outPipe.0="mypipe" --write-xml file="planetout.osm" inPipe.0="mypipe"

Cómo extraer un área definida por un archivo Osmosis/Polygon Filter File Format:

osmosis --read-xml file="planet-latest.osm" --bounding-polygon file="country2pts.txt" --write-xml file="germany.osm"

Cabe destacar que los filtros --way-key-value y --node-key-value no se pueden usar simultáneamente en una ejecución. En vez de ello, será necesario crear dos (o más) archivos, a partir de distintas sentencias, y unirlos posteriormente, mediante el comando merge. Para unir n archivos, el comando merge deberá ser utilizado n-1 veces, como se muestra en el ejemplo siguiente:

osmosis --rx 1.osm --rx 2.osm --rx 3.osm --merge --merge --wx merged.osm

What if you want restaurants in a particular town or country ? Since restaurants can be mapped as nodes and ways, you'll have to run 3 commands: One to extract the nodes tagged as amenity=restaurant, one to extract the ways tagged amenity=restaurant, and third command will merge them together:

osmosis --read-xml input.osm --tf accept-nodes amenity=restaurant --tf reject-ways --tf reject-relations --write-xml output-nodes.osm

osmosis --read-xml input.osm --tf accept-ways amenity=restaurant --tf reject-relations --used-node --write-xml output-ways.osm

osmosis --rx output-ways.osm --rx output-nodes.osm --merge --wx merged.osm

Extracting bounding boxes

One of the basic use cases is extracting a subset of OSM XML from a large downloaded file. You might have downloaded the world OSM (planet.osm) and want to extract some region, or maybe you have a country extract downloaded but only want one city. The simplest way to do that is by extracting a rectangle.

An example that extracts Nürnberg and some area around it from Germany - or maybe world - OSM:

bzcat downloaded.osm.bz2 | osmosis  --read-xml enableDateParsing=no file=-  --bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201 --write-xml file=- | bzip2 > extracted.osm.bz2

This approach uses bzip2 directly for extracting and compressing, as it is claimed to be more effective than the built-in archiver.

The easiest way to get coordinates is to use the map on www.openstreetmap.org. Doubleclick the spot you want coordinates for, then click "Permalink" and grab the data from the URL field.

Windows notes

bzcat is the tool to use even on Windows if you want to have good performance. However, /dev/stdin is not a valid path on Windows. Use CONIN$ instead.

Getting help and reporting bugs

The best place to get answers to questions on osmosis usage is the osmosis dev mailing list.

https://lists.openstreetmap.org/listinfo/osmosis-dev

Please discuss potential bugs on the dev mailing list before creating new tickets. If you're confident you have discovered a bug, it can be logged in the OSM trac system against the "osmosis" component:

https://trac.openstreetmap.org/query?component=osmosis

See also

Development

Details on osmosis development are available at Osmosis/Development. Visit there for documentation on the internal structure of osmosis, design decisions, steps to configuring development environments, etc.

Notes

The minimum supported Java version is 1.6. Osmosis makes use of some java.awt.geom classes that only appeared in 1.6, if these are re-written to use 1.5 functionality it may be possible to return to the previous minimum of 1.5. Osmosis utilises generics and java.util.concurrent features requiring Java 1.5 as a minimum.

The built-in bzip2 (.bz2) performance is much slower than the gzip (.gz) built-in Java one (Java gzip utilizes native code to improve performance). However, the trade off is that bzip2 creates much smaller compressed files. Also recent planet downloads use features of bzip2 which are not supported by the built-in bzip2 library (streams). For working with these, and for faster processing of any larger files, it is suggested to use your platform's native bzip2 implementations and read and write files from /dev/stdin and /dev/stdout respectively.

pbzip2 -d -c planet.osm.bz2 | bin/osmosis --rx /dev/stdin --wx /dev/stdout | gzip -c > planet-same.osm.gz

See also /Benchmarking

Under Win 7 64 bit it may be necessary to run the .bat file from a command prompt. The underlying osmosis.bat file may need to have the full path name for java.exe inserted.

References