Imposm est un importateur de données OpenStreetMap. Il lit les fichiers PBF et importe les données dans PostgreSQL/PostGIS. Il peut également mettre à jour automatiquement la base de données avec les dernières modifications d'OSM.
Il est conçu pour créer des bases de données optimisées pour le rendu (c'est-à-dire la génération de tuiles ou pour les services WMS).
Imposm >=3 est écrit en Go et il s'agit d'une réécriture complète de l'implémentation Python précédente. Les configurations/mappages et les fichiers cache ne sont pas compatibles avec Imposm 2, mais ils partagent une architecture similaire.
Le développement d'Imposm est sponsorisé par Omniscale.
Imposm est utilisé en production par les auteurs. Il est activement maintenu, en mettant l'accent sur la résolution des futures incompatibilités avec des dépendances telles que PostGIS. Cependant, il n'existe aucune capacité de support pour les utilisateurs finaux et aucune nouvelle fonctionnalité ne sera développée au-delà de sa portée existante.
Haute performance : parallèle à partir de zéro. Il distribue l'analyse et le traitement à tous les cœurs de processeur disponibles.
Schémas de base de données personnalisés : crée des tables pour différents types de données. Cela permet un style plus facile et de meilleures performances pour le rendu dans les services WMS ou de tuiles.
Unifier les valeurs : par exemple, les valeurs booléennes 1
, on
, true
et yes
deviennent toutes TRUE
.
Filtrer par balises et valeurs : importez uniquement les données que vous allez rendre/utiliser.
Cache de nœuds efficace : Il est nécessaire de stocker tous les nœuds pour construire des chemins et des relations. Imposm utilise une base de données clé-valeur basée sur des fichiers pour mettre en cache ces données.
Tableaux généralisés : crée automatiquement des tableaux avec des résolutions spatiales inférieures, parfaits pour le rendu de grands réseaux routiers en basse résolution.
Limiter aux polygones : limitez les géométries importées aux polygones de GeoJSON, pour les importations de ville/état/pays.
Déploiement facile : binaire unique avec uniquement des dépendances d'exécution aux bibliothèques communes (GEOS et LevelDB).
Mises à jour automatiques d'OSM : inclut un service d'arrière-plan ( imposm run
) qui télécharge et importe automatiquement les dernières modifications d'OSM.
Relations de route : importez tous les types de relations, y compris les routes.
Prise en charge de l'espace de noms de table (schéma PostgreSQL)
COPY FROM
Un import en mode diff sur un serveur Hetzner AX102 (AMD Ryzen 9 7950X3D, 256 Go de RAM et stockage NVMe) d'un PBF planétaire de 78 Go (2024-01-29) avec tables et indices spatiaux généralisés, etc. prend environ 7h30. Il s'agit d'une importation prête pour des mises à jour minutieuses. Le mode sans différence est encore plus rapide.
Il est recommandé que la taille de la mémoire du serveur soit environ deux fois supérieure à celle de l'extrait PBF que vous importez. Par exemple : vous devez disposer de 192 Go de RAM ou plus pour un fichier planétaire actuel (2024) de 78 Go, de 8 Go pour un extrait régional de 4 Go, etc. Les importations avec des disques en rotation prendront beaucoup plus de temps et ne sont pas recommandées.
Les versions binaires sont disponibles sur GitHub.
Ces versions sont destinées à Linux x86 64 bits et ne nécessitent aucune autre dépendance. Téléchargez, décompressez et démarrez imposm
. Les binaires sont compatibles avec Debian 10 et d'autres distributions à partir de 2022 ou plus récentes. Vous pouvez créer à partir des sources si vous avez besoin de prendre en charge des distributions plus anciennes.
Il existe quelques dépendances :
Vous avez besoin d'aller. 1.17 ou supérieur est recommandé.
Les autres dépendances sont libleveldb et libgeos. Imposm a été testé avec des versions récentes de ces bibliothèques, mais vous pourriez réussir avec des versions plus anciennes. GEOS >=3.2 est recommandé, car il est devenu beaucoup plus robuste lors de la gestion de géométries non valides.
Le moyen le plus rapide d'installer Imposm est d'appeler :
go install github.com/omniscale/imposm3/cmd/imposm@latest
Cela téléchargera, compilera et installera Imposm sur ~/go/bin/imposm
. Vous pouvez modifier l'emplacement en définissant l'environnement GOBIN
.
La méthode d'installation recommandée est la suivante :
git clone https://github.com/omniscale/imposm3.git
cd imposm3
make build
make build
construira Imposm dans votre chemin local et ajoutera des informations de version à votre binaire.
Vous pouvez également utiliser directement go pour construire ou installer imposm avec go build ./cmd/imposm
. Cependant, cela ne définira pas les informations de version.
Go compile vers des binaires statiques et Imposm n'a donc aucune dépendance d'exécution avec Go. Copiez simplement le binaire imposm
sur votre serveur pour le déploiement. Les bibliothèques C/C++ répertoriées ci-dessus sont cependant toujours requises.
Voir également packaging.sh
pour obtenir des instructions sur la façon de créer des packages binaires pour Linux.
Pour de meilleures performances, vous devez utiliser LevelDB >1.21. Vous pouvez toujours construire avec la prise en charge de la version 1.21 avec go build -tags="ldbpre121"
ou LEVELDB_PRE_121=1 make build
.
imposm
a plusieurs sous-commandes. Utilisez imposm import
pour les importations de base.
Pour une simple importation :
imposm import -connection postgis://user:password@host/database
-mapping mapping.json -read /path/to/osm.pbf -write
Vous avez besoin d'un fichier JSON avec le mappage de la base de données cible. Voir example-mapping.json
pour avoir une idée de ce qui est possible avec le mappage.
Imposm crée toutes les nouvelles tables dans le schéma de table import
. Vous aurez donc import.osm_roads
etc. Vous pouvez modifier les tables vers le schéma public
:
imposm import -connection postgis://user:passwd@host/database
-mapping mapping.json -deployproduction
Vous pouvez écrire certaines options dans un fichier de configuration JSON :
{
"cachedir": "/var/local/imposm",
"mapping": "mapping.json",
"connection": "postgis://user:password@localhost:port/database"
}
Pour utiliser cette configuration :
imposm import -config config.json [args...]
Pour plus d'options, voir :
imposm import -help
Remarque : la prise en charge de TLS/SSL est désactivée par défaut en raison du manque de prise en charge de la renégociation dans l'implémentation TLS de Go. Vous pouvez réactiver le cryptage en définissant la variable d'environnement PGSSLMODE
ou l'option de connexion sslmode
sur require
ou verify-full
, par exemple : -connect postgis://host/dbname?sslmode=require
. Vous devrez désactiver la prise en charge de la renégociation sur votre serveur pour éviter les erreurs de connexion lors d'importations plus importantes. Vous pouvez le faire en définissant ssl_renegotiation_limit
sur 0 dans la configuration de votre serveur PostgreSQL.
La dernière documentation peut être trouvée ici : http://imposm.org/docs/imposm3/latest/
Il existe une liste de diffusion sur Google Groupes pour toutes les questions. Vous pouvez vous inscrire en envoyant un e-mail à : [email protected]
Pour une assistance commerciale, contactez Omniscale.
Le code source est disponible sur : https://github.com/omniscale/imposm3/
Vous pouvez signaler tout problème sur : https://github.com/omniscale/imposm3/issues
Imposm est publié en open source sous la licence Apache 2.0. Voir LICENCE.
Toutes les dépendances incluses comme code source sont publiées sous une licence de type BSD. Voir LICENSE.dep.
Toutes les dépendances incluses dans les versions binaires sont publiées sous une licence BSD, à l'exception du package GEOS. Le package GEOS est publié sous le nom LGPL3 et est lié dynamiquement. Voir LICENSE.bin.
Pour exécuter tous les tests unitaires :
make test-unit
Il existe des tests système qui importent et mettent à jour les données OSM et vérifient le contenu de la base de données. Vous avez besoin osmosis
pour créer les fichiers de test PBF. Il existe un Makefile qui crée tous les fichiers de test si nécessaire, puis exécute le test lui-même.
make test
Appelez make test-system
pour ignorer les tests unitaires.
AVERTISSEMENT : il utilise votre base de données PostgreSQL locale (schéma imposm_test_import
, imposm_test_production
et imposm_test_backup
). Modifiez la base de données avec les variables d'environnement standard PGDATABASE
, PGHOST
, etc.