FR:Osmosis

From OpenStreetMap Wiki
Jump to navigation Jump to search
Sub pages
Installation
Detailed Usage
Examples
Development
Writing Plugins

Osmosis est une application java en ligne de commande pour la manipulation des données OSM. L'application se compose d'une série d'outils qui peuvent être chaînés pour effectuer une opération de grande envergure. Par exemple, il comporte des éléments de lecture et d'écriture de la base de données ou d'un fichier, des composants pour calculer et appliquer un ensembles de modifications aux sources de données, des composants pour le tri des données, etc. Il a été rédigé de façon à ce qu'il soit facile d'ajouter de nouvelles fonctionnalités sans ré-écriture des tâches courantes telles que la manipulation de fichiers ou de bases de données.

Voici quelques exemples des choses qu'il peut actuellement faire :

  • Générer une copie de la planète a partir de la base de données
  • Charger une copie de la planète dans la base de données
  • Créer un groupe de changement à partir de l'historique des tables de la base de données
  • Appliquer un groupe de changement à une base local
  • Comparer deux fichiers planète et produire un groupe de changement
  • Trier les données contenues dans un fichier planète
  • Extraire des données dans un "Bounding box" ou dans un polygone
  • Comparer deux fichiers planètes

Situation actuelle

Osmosis est à un stade où la majorité du code ne risque pas de changer radicalement. Les nouvelles fonctionnalités seront introduites au fil du temps sous la forme de nouvelles tâches et plugins, mais les fonctionnalités existantes ne seront sûrement pas supprimées. Tous les rapports de bogues sont les bienvenus.

La version actuelle supporte l'API 0.6

Téléchargement

Dernière version stable

La dernière version stable doit de préférence être utilisée : https://github.com/openstreetmap/osmosis/releases/latest

Versions antérieures

API 0.5

La dernière version compatible avec l'API 0.5 est la 0.35

Schéma BDD

Le script de création de la base de données correspondant à l'API en production est fourni avec le paquet osmosis dans le dossier script/contrib.

Le script de création de la base de données PostGIS "simple" pour Osmosis est fourni avec le paquet osmosis dans le dossier script/contrib.

Voir aussi:

Code source

Le dépôt Git est accessible sur GitHub ici: https://github.com/openstreetmap/osmosis

(plus de détail dans la section Osmosis/Installation.)

Version de développement

À utiliser que si vous avez besoin des dernières fonctionnalités ou de corrections de bugs. Aucune garantie n'est faite quant à la stabilité de ces versions.

Les versions de développement sont générées au fur et à mesure des mise à jour du dépôt. Le paquet inclut le numéro de révision Subversion pour être plus facilement identifié.

L'ancien système de générateur de source est toujours disponible, ne l'utiliser qu'en cas d'indisponibilité du serveur actuel :

https://dev.openstreetmap.org/~bretth/osmosis-build/

Utilisation

Utilisation détaillée

le détail complet des commandes et paramètres sont disponible ici:

Exemple d'utilisation

(plus de détail ici.)

Importer un fichier xml dans une base de données PostgreSQL.

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

ou

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


Exporter un fichier planète depuis une base de donnée postgreSQL.

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

Déduire les modifications entre deux fichiers planet.

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

déduire les modifications entre un fichier planète et une base de donnée PostgreSQL.

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"

Appliquer un groupe de changement à un fichier planète.

osmosis  --read-xml-change file="planetdiff-1-2.osc" --read-xml file="planet1.osm" --apply-change --write-xml file="planet2.osm" or
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

Trier le contenu d'un fichier planète.

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

The above examples make use of the default pipe connection feature, however a simple read and write planet file command line could be written in two ways. The first example uses default pipe connection, the second explicitly connects the two components using a pipe named "mypipe". The default pipe connection will always work so long as each task is specified in the correct order. Each task pushes its output stream(s) onto a stack, and each task that requires input stream(s) takes them from the stack. This stack-based approach is the reason why the above "--apply-change" example first reads the change file, then the data file - the --apply-change task will then first retrieve the data file from the stack and then the change file.

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"

Extrait une zone définie dans un fichier Osmosis/Polygon Filter File Format :

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

Extrait seulement les lignes avec les tags défini dans la commande.

En spécifiant le paramètre --used-node seul les points, ayants les tags défini dans les ways. Les relations reste inchangé.

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

Avec un fichier volumineux, Il est possible qu'une erreur soit provoqué à cause d'un manque de memoire. Dans ce cas, ajouter idTrackerType=BitSet au paramètre --used-node:

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

Important: --way-key-value et --node-key-value Ne peuvent etre utilisé en même temps. Pour contourner cela, créer deux fichier (ou plus) puis les concaténer (pour n fichier appeler n-1 le parametre merge ):

Concaténer des fichiers.

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

Only 0.5 tasks are available from version 0.22 onwards.

Extracting bounding boxes

One of the basic use cases is extracting a smaller subset of OSM XML. 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 Nuremberg and some area around it from Germany - or maybe world - OSM:

 bzcat downloaded.osm.bz2 | osmosis\
  --read-xml enableDateParsing=no file=/dev/stdin\
  --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 doubleclick the spot you want coordinates for, then click "Permalink" and grab data from URL field.

Windows trick

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. However, one can use CONIN$ as the path.

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.

A number of tasks produce temporary files that contain serialised java classes to avoid using too much RAM. These files are gzipped to reduce disk space and in many cases improve performance through reduced IO. This will fail on some Java installations where the uncompressed data exceeds 2GB. This is caused by Bug 5092263. Upgrading to a later JDK will fix this problem. The only other option is to modify the source code to use uncompressed temporary files, contact me if this is required. This affects the IBM JDK1.5.0 included with IBM Rational tools such as Rational Software Architect. This was fixed in Sun JDK 5.0u8(b01) and Sun JDK 6.0.

The built-in bzip (.bz2) performance is much slower than the gzip (.gz) built in Java one (Java gzip utilizes native code to improve performance). Also recent planet downloads use features of bzip which are not supported by the built-in bzip library (streams). For working with these, and for faster processing of any larger files, it is suggested to use platform's native bzip 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 Osmosis/Examples#Benchmark tests