Tutoriel : Générer des tuiles de carte

Traduction automatique

Table des matières

 

Introduction

QCAD est livré avec deux outils en ligne de commande pour créer des tuiles cartographiques à utiliser avec des affichages de cartes en ligne tels que Leaflet. Leaflet est une bibliothèque JavaScript permettant de travailler avec des cartes interactives dans un navigateur. 

Présenter un dessin en ligne

Le cas d'utilisation le plus simple pour une carte en ligne est de fournir aux visiteurs d'un site web une vue interactive et zoomable d'un dessin.

Voici un exemple qui génère les tuiles de la carte pour tout fichier de dessin donné :

dwg2maptiles -z 0-6 -c -b white -hq-postfix=@2x -a -o path/to/output/directory drawing.dxf

Le commutateur -z spécifie les niveaux de zoom à générer, ici du niveau de zoom 0 au niveau de zoom 6. Cela signifie qu'à partir du niveau 0 (dessin entier du zoom automatique), l'utilisateur peut zoomer 6 fois jusqu'à ce que la limite soit atteinte. Chaque fois que l'utilisateur effectue un zoom avant, le dessin est agrandi d'un facteur 2, donc avec 6 niveaux de zoom, l'utilisateur peut effectuer un zoom avant d'un facteur 2^6 (=64). La génération de plus de niveaux de zoom nécessite plus de temps et d'espace disque. Chaque niveau de zoom supplémentaire nécessite généralement quatre fois plus de temps et d'espace disque pour être généré que le précédent.

Les tuiles sont générées dans le répertoire de sortie donné (-o) avec la structure de répertoire et les noms de fichiers standard pour les tuiles de carte (z/x/y.png).

Dans l'exemple ci-dessus, nous voulons que le dessin soit rendu sur un fond blanc (-b white). Les lignes blanches doivent être corrigées en noir pour s'assurer que toutes les lignes sont visibles (-c).

L'argument -hq-postfix=@2x indique à dwg2maptiles de générer des tuiles de haute qualité (hq, high-res, retina) à 512x512px en même temps que les tuiles de résolution standard à 256x256px.

Pour augmenter encore la qualité, nous utilisons également le commutateur -a pour l'anticrénelage.

Voici le résultat d'un tel affichage de dessin interactif généré avec dwg2maptiles:

 

Générer des tuiles cartographiques géoréférencées

dwg2maptiles peut également être utilisé pour générer des superpositions exactes pour les cartes du monde. Pour cela, un dessin doit généralement être transformé d'un système de coordonnées locales en coordonnées Mercator Web, telles qu'elles sont couramment utilisées par les cartes en ligne.

QCAD Professional est livré avec un outil de ligne de commande distinct permettant de transformer les dessins d'un système de référence de coordonnées (CRS) à un autre : dwgmapconvert.

Dwgmapconvert est généralement utilisé pour convertir toutes les coordonnées d'un fichier de dessin donné d'un système de coordonnées local et connu au système de coordonnées EPSG:3857 (parfois appelé "Web Mercator"). C'est le système de coordonnées utilisé par la plupart des cartes en ligne, par exemple Google maps ou mapbox. Pour utiliser un dessin comme entrée pour dwg2maptiles et produire des dalles de carte géoréférencées, le dessin doit être dans le système de coordonnées EPSG:3857.

Dans le système de coordonnées EPSG:3857, la carte du monde entière tient dans un carré de 20037508,3427892m au niveau de zoom 0. Si un dessin est converti dans ce système de coordonnées, le dessin est transformé de telle sorte qu'il s'insère dans ce carré mondial et que le dessin soit situé aux coordonnées mondiales correctes et projetées.

La carte du monde est un système de coordonnées.

Par exemple, si un dessin a été créé en EPSG:2056 (également MN95, le système de coordonnées local suisse), il peut être transformé en EPSG:3857 avec dwgmapconvert comme suit:

dwgmapconvert -segment-length=0.5 -crs-in=EPSG:2056 -crs-out=EPSG:3857 -f -o drawing_epsg3857.dxf drawing_epsg2056.dxf

Puisque les projections cartographiques sont généralement non linéaires, les courbes et les lignes plus longues doivent être divisées en petits segments de ligne qui peuvent ensuite être projetés de manière non linéaire. Si le commutateur -segment-length est fourni, dwgmapconvert fait cette segmentation automatiquement, en utilisant la longueur de segment donnée. La longueur du segment est spécifiée en unités de dessin du dessin d'origine (ici Mètre).

-crs-in est utilisé pour spécifier le système de coordonnées d'entrée, ici EPSG:2056.

-crs-out est utilisé pour spécifier le système de coordonnées de sortie, qui doit être EPSG:3857 si la sortie doit être utilisée ultérieurement avec dwg2maptiles.

Générer des tuiles de carte

Une fois que nous avons converti le dessin en coordonnées EPSG:3857, nous pouvons utiliser dwg2maptiles pour générer les tuiles pour la couche de recouvrement dans leaflet:

dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -b transparent -o path/to/output/directory drawing_epsg3857.dxf

Notez que nous devons passer le commutateur -web-mercator à dwg2maptiles pour lui faire savoir qu'il ne doit pas effectuer un zoom automatique mais générer une superposition de carte dans les coordonnées EPSG:3857 exactes telles que présentes dans le fichier.

-skip-empty indique à dwg2maptiles de ne pas générer de tuiles qui ne contiennent aucune partie du dessin. Sans ce commutateur, 2^zoomLevel tuiles seront générées par niveau de zoom. Cela donnerait 4'194'304 tuiles pour le niveau de zoom 22. Étant donné qu'un dessin de superposition ne couvre très probablement qu'une très petite partie de la carte du monde, ce commutateur devrait toujours être utilisé lors de la création de cartes de superposition.

-b transparent règle le fond sur transparent, de sorte que la carte peut être utilisée comme superposition pour une carte du monde existante (par exemple, Google Map, mapbox, etc.). Pour contrôler la couleur dans laquelle les lignes noires ou blanches sont affichées, le fond peut être défini comme noir transparent ou blanc transparent avec -b "#00ffffff" (fond blanc transparent, lignes noires) ou -b "#00000000" (fond noir transparent, lignes blanches) respectivement. Veillez à passer également le commutateur -c dans ce cas pour forcer la correction automatique des couleurs.

L'argument -hq-postfix=@2x peut être utilisé pour générer des tuiles haute résolution (512px) en plus des tuiles normales de 256px. La valeur "@2x" est recommandée et largement utilisée pour les tuiles haute résolution, également dans leaflet. Avec ce commutateur, pour chaque tuile basse résolution "N.png", une tuile haute résolution "[email protected]" est créée.

Utilisation de plusieurs processus (et cœurs de processeur)

La génération de tuiles de carte peut être une tâche intensive en termes de CPU, en fonction des niveaux de zoom, de la complexité du dessin et d'autres paramètres.

Pour générer des tuiles de carte plus rapidement, vous pouvez diviser la tâche entre plusieurs cœurs CPU disponibles. Pour cette fonctionnalité, dwg2maptiles offre le commutateur -s pour générer seulement une tranche des tuiles requises. Le commutateur -s attend deux paramètres séparés par des virgules : la tranche à générer et le nombre total de tranches utilisées. Par exemple, -s 1,4 génère la première tranche de quatre tranches au total. Pour générer toutes les tuiles de l'exemple ci-dessus en utilisant quatre cœurs de CPU, vous pourriez exécuter :

dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 1,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 2,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 3,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
dwg2maptiles -web-mercator -skip-empty -hq-postfix=@2x -z 22 -s 4,4 -b transparent -o path/to/output/directory drawing_epsg3857.dxf &
wait

Bien sûr, vous pourriez également diviser les tâches par niveaux de zoom ou utiliser des tranches pour les niveaux de zoom supérieurs uniquement et un seul processus pour tous les niveaux de zoom inférieurs (moins chers), etc.

Exemple

Dans cet exemple, nous fournissons deux couches de superposition à la carte du canton suisse de Zurich : la zone forestière protégée et les corridors faunistiques. Les données originales sont arrivées en coordonnées EPSG:2056 (MN95) et ont été transformées en EPSG:3857 à l'aide de dwgmapconvert.

 

.