SLT

Title  SLT

Summary

Export d'un atlas sous forme d'un document PDF multi-pages pour arcOpole PRO DT-DICT.

Le nom du PDF produit par l'outil est retourné en paramètre de sortie.


Usage

Cet outil est fait pour être appelé à partir d'arcOpole PRO DT-DICT.

L'export est réalisé à partir d'un dossier des modèles qui concernent un type de réseau.

Ce dossier des modèles contient :

- Des sous-dossiers A4, A3, A2, A1, A0. Un pour chaque modèle de format de mise en page (correspondant aux formats A4, A3, A2, A1, A0).

- Un fichier de connexion export_atlas.sde qui doit permettre l'accès à la base de données contenant les tables DT, DICT et ATU

- Une geodatabase fichier "emprise.gdb" (livrée avec l'outil), qui sera utilisée par les fichiers projets ArcGIS Pro présents dans chacun des sous-dossiers des modèles.

La geodatabase emprise.gdb contient 2 classes d'entités, carroyage et emprise.

- La classe d'entités "emprise" sera utilisée pour contenir l'emprise de la zone à représenter

- La classe d'entités "carroyage" sera utilisée pour contenir les emprises de chacune des pages qui composeront l'atlas. Cela représente le plan d'assemblage de l'atlas.

La connexion définie par le fichier export_atlas.sde permet de renseigner les textes dynamiques des mises en pages, avec des attributs de la demande (DT, DICT ou ATU) pour laquelle est généré l'atlas.

Si cette connexion n'est pas définie, les éléments dynamiques des mises en page ne seront pas gérés.

Pour que cet outil puisse être publié en tant que service de géotraitement par ArcGIS Server, cette connexion SDE doit être inscrite sur ArcGIS Server.

Chaque sous dossier d'un format de mise en page (A4, A3...) contient :

- un fichier projet ArcGIS Pro (.aprx) du même nom que le dossier modèle d'un format (A4.aprx par exemple),

- des pdf utilisés comme pages de début ou de fin,

- un fichier params.xml qui décrit les paramètres de l'atlas (voir plus loin)

Le projet ArcGIS Pro (APRX) d'un modèle contient des cartes (Map) et des mises en page (Layout) utilisées pour générer les pages de l'atlas, par la fonctionnalité d'ArcGIS Pro de Série de cartes (map series).

Un atlas PDF se compose d'une page de début, d'un plan d'assemblage, d'un ou plusieurs groupes de pages représentant une thématique, d'une page de fin.

Généralement un seul groupe de pages représentant une thématique est présent, mais il est possible d'en utiliser plusieurs.

Plus précisément, un atlas PDF peut se composer des pages suivantes :

- une page de début (optionnelle) issue d'un PDF _page_debut.pdf

- un plan d'assemblage (optionnel) issu d'une mise en page nommée "_assemblage" dans le projet APRX

- une page de légende générale (optionnelle, placée sur option avant ou après les pages thématiques) issue d'une mise en page nommée "_legende" dans le projet APRX

- Un ou plusieurs groupes de pages qui représentent une thématique (générées par une mise en page de l'APRX) :

Une thématique se définit par une mise en page nommée par exemple "metier", une mise en page de légende et des PDF annexes, ayant tous pour préfixe le nom de cette mise en page ("metier")

Si plusieurs thématiques sont présentes, elles seront utilisées par ordre alphabétique.

Chaque groupe de pages d'une thématique se compose de :

- une page de début (optionnelle) issue d'un PDF "<metier>_page_debut.pdf"

- une page de légende (optionnelle, placée avant ou après les pages de la thématique) issue d'une mise en page du projet APRX nommée "<metier>_legende"

- les pages de la thématique, générées par la "série de cartes" (map series) d'une mise en page nommée "<metier>"

- une page de légende (optionnelle, placée avant ou après les pages de la thématique) issue d'une mise en page du projet APRX nommée "<metier>_legende"

- une page de fin (optionnelle) issue d'un PDF "<metier>_page_fin.pdf"

- une page de légende générale (optionnelle, placée avant ou après les pages thématiques) issue d'une mise en page du projet APRX

- une page de fin (optionnelle) issue d'un PDF "_page_fin.pdf"

Par exemple :

Pour le réseau EAU, pour le format A4, qui doit générer une page de début (_page_debut.pdf), un plan d'assemblage, une légende générale, deux métiers metier1 et metier2, une page de fin (_page_fin.pdf) :

- metier1 sera composé d'une page de début (metier1_page_debut.pdf), d'une page légende, des pages qui représentent metier1, et pas de page de fin.

- metier2 sera composé d'une page de début (metier2_page_debut.pdf), pas de page de légende, des pages qui représentent metier2, une page de fin (metier2_page_fin.pdf)

Dans le dossier EAU\A4, on trouvera :

_page_debut.pdf

metier1_page_debut.pdf

metier2_page_debut.pdf

metier2_page_fin.pdf

_page_fin.dbf

A4.Aprx

dans A4.aprx on trouvera les mises en pages suivantes : :

"_assemblage" (le plan d'assemblage)

"_legende" (la légende générale)

"metier1" (pour générer la série de cartes de metier1)

"metier1_legende" (la légende de metier1)

"metier2" (pour générer la série de cartes de metier1)

Au niveau cartes, l'APRX se composera d'une carte (Map) pour le plan d'assemblage, et d'une carte par métier (cette carte par métier sera utilisée par les mises en page de légende et de génération de série de cartes de ce métier)

Par exemple :

"Couches_assemblage" : utilisée par la mise en page "_assemblage"

"Couches_metier1" : utilisé par les mises en page "metier1" et "metier1_legende"

"Couches_metier2" : utilisé par la mise en page "metier2"

Contenu des cartes et mises en pages :

Assemblage :

La mise en page "_assemblage" doit contenir une et une seule "fenêtre cartographique" (map frame) qui utilise une carte.

La carte utilisée par la mise en page "_assemblage" doit contenir les couches issues d'emprise.gdb :

- "emprise", qui doit être nommée "Emprise" dans la carte.

- "carroyage", qui doit être nommée "Mise en page" dans la carte.

Il est possible d'y ajouter d'autres couches de données de la base de données géographiques, et bien sûr des éléments d'habillage (titre, logo...).

Métier :

La mise en page d'un métier, qui permet de générer les pages d'un atlas, doit contenir au moins une "fenêtre cartographique" (map frame) qui utilise une carte, et définir une "série de cartes" (map serie) basée sur cette "fenêtre cartographique" :

Créer cette carte et l'ajouter en tant que "fenêtre cartographique" dans la mise en page.

Cette carte doit contenir les couches issues d'emprise.gdb :

- "emprise", qui doit être nommée "emprise" dans la carte.

- "carroyage", qui doit être nommée "Mise en page" dans la carte.

Il est nécessaire d'y ajouter les couches de données de la base de données géographique représentant le métier (et de définir leur symbologie).

Pour définir les séries de cartes (map serie), à partir de la mise en page, dans l'onglet Mise en page (layout) -> Série de cartes (Map series), choisir "spatial" puis "Activer" (Enabled)

Dans la fenêtre de propriétés de mise en page/série de cartes (layout properties/Map Series) :

Couche d'indexation : (Index layer)

Fenêtre cartographique (Map Frame) : choisir la "fenêtre cartographique" de la carte

Couche (Layer) : Mise en page

Champ Nom (Name Field) : PageName

Champ de tri (Sort Field) : PageNumber

Etendue de la carte (Map Extent) :

Etendue ajustée (Best Fit Extent) :

Taille de la marge (Margin size) : 1 centimètre (par exemple)

Arrondir l'échelle à la valeur la plus proche (Round scale to neareast) : 1

ATTENTION, si pour la génération de l'atlas, on utilise plusieurs mises en page métier avec des séries de cartes, la taille papier de la "fenêtre cartographique" sur la page doit être la même dans toutes les mises en pages, et la définition de l'étendue de la carte dans la "série de cartes" doit être identique dans toutes les cartes (étendue ajustée : taille de la marge).

Légende :

Une mise en page légende (légende générale ou légende d'un métier particulier) doit contenir une "fenêtre cartographique" (map frame) basée sur la carte du métier, et un bloc légende basé sur cette "fenêtre cartographique".

La fenêtre cartographique peut être rendue invisible puisqu'elle n'est pas nécessaire sur la page de légende, ou bien déplacée hors de la zone d'impression de la page.

Fichier params.xml :

Un fichier params.xml est présent dans chaque dossier d'un modèle de format (A4, A3...).

Il définit :

- l'échelle par défaut de la carte

- la taille papier de la fenêtre cartographique de la carte sur la mise en page prenant en compte la marge de la série de cartes

- la position de la page légende par rapport aux pages d'un métier (avant ou après)

- la qualité du PDF produit (en DPI (points par pouces))

- mode d'économie de page ou pas, pour ne pas générer des pages ne contenant pas de données métier (et réduire la taille du fichier PDF produit)

Exemple :

<?xml version="1.0" encoding="utf-8" ?>

<Model>

<Scale>1000</Scale> <!-- Echelle par défaut -->

<Height>170</Height> <!-- Hauteur en mm papier de la fenêtre cartographique (mapFrame), moins 2 fois la marge (en mm) définie dans la "série de cartes" (mapSeries) : Etendue de la carte : Etendue ajustée -->

<Width>267</Width> <!-- Largeur en mm... -->

<LegendOrder>Avant</LegendOrder> <!-- "Avant" ou "Apres" pour que la page de légende soit avant ou après les pages générées pour un métier -->

<Dpi>150</Dpi> <!-- Résolution du pdf à produire à produire, en points par pouces -->

<PagesSaving> <!-- Mode d'économie de pages -->

<Map name="couches metier"> <!-- nom d'une carte dont des couches seront utilisées pour déterminer si des données sont présentes sur une page -->

<Layer>Noeud</Layer> <!-- nom d'une couche utilisée pour déterminer si des données sont présentes sur une page -->

<Layer>Arc</Layer>

</Map>

</PagesSaving>

</Model>

Attention, comme on indique ici la hauteur et largeur papier de la fenêtre cartographique (et tenant compte de la marge définie dans la "série de cartes"), si on représente plusieurs séries de cartes (plusieurs mises en page métier), il faut absolument que dans ces mises en page, la fenêtre cartographique ait toujours la même taille (et les mêmes propriétés de marge dans la série de cartes).

Si cela n'est pas strictement respecté, l'échelle demandée ne sera pas respectée non plus.

Mode d'économie de pages :

Pour déterminer si une page contient des données métier, l'outil peut rechercher dans des couches, si elles contiennent des données qui intersectent l'emprise à représenter.

Pour cela, il faut définir dans le fichier params.xml une balise <PagesSaving>

Dans cette balise, une ou plusieurs balises <Map> permettent d'indiquer les cartes dont des couches seront analysées.

Dans une balise <Map>, une ou plusieurs balises <Layer> permettent d'indiquer le nom des couches vectorielles (featurelayer) permettant de déterminer si des données sont présentes sur une page.

Si aucune balise <Map> n'est présente, tous les cartes présentes dans le projet APRX seront utilisées (et toutes leurs couches vectorielles, autres que "Emprise" et "Mise en page").

<Map name="..."> Nom d'une carte dont analyser les couches

<Layer> Nom d'un couche vectorielle (featurelayer) dans la carte, servant à déterminer si une page est vide ou non.

Si un élément de la couche est présent dans la page, cette page sera dans l'atlas, sinon la page ne se pas produite.

Le nom de la couche n'est pas sensible aux minuscules/majuscules.

Répéter autant de balises <Layer> que nécessaire.

Dans une balise <Map>, si aucune balise <Layer> n'est présente, toutes les couches vectorielles (featurelayer) autres que "Emprise" et "Mise en page" seront utilisées.

Textes dynamiques :

Les mises en pages de l'APRX qui composent l'atlas, peuvent contenir des textes venant des attributs de la demande (DT, DICT ou ATU) pour laquelle est généré l'atlas.

Pour cela, les paramètres de l'outil : ConnexionSDE, Table et Requete doivent être renseignés. La requête sera posée sur la table dans la connexion SDE et les valeurs des champs de l'enregistrement retournée pourront être utilisées par les textes dynamiques.

Les textes dynamiques peuvent être définis dans tous les éléments de type texte d'ArcGIS Pro

Pour qu'un texte soit traité comme texte dynamique il faut lui indiquer dans son nom, le mot clef DYNAMIQUE (Le nom d'un élément d'une mise en page est modifiable directement dans la liste des éléments de la mise en page).

Pour utiliser la valeur d'un champ en tant que texte, il faut insérer dans le texte le nom du champ entre crochets.

Exemple :

N° de téléconsultation : [no_consult_teleservice]

sera traduit en : N° de téléconsultation : 20200904003323

N° de téléconsultation : [no_consult_teleservice] date de la demande : [date_reception_demande]

sera traduit en : N° de téléconsultation : 20200904003323 date de la demande : 04/11/2020 00:00:00

Pour certains types de champs, il peut être nécessaire de formater d'une façon particulière la valeur de ces champs.

Par exemple, par défaut, un champ de type date est affiché avec la date et l'heure, alors que l'on peut vouloir n'afficher que la date, ou que l'heure, ou encore avec un format particulier.

Pour spécifier un formatage pour un champ, il faut ajouter derrière le nom du champ (et entre les crochets) le caractère ` (<Alt Gr> <7>) suivit d'une chaîne de caractères.

Par exemple :

Date de rendez-vous : [date_rdv_a`%x] ([date_rdv_a`%H:%M])

sera traduit en : Date de rendez-vous : 31/01/2021 (12:05)

Explications :

%x pour un champ date, affiche uniquement la date

%H:%M affiche l'heure sur 2 chiffres de 00 à 24 et les minutes sur 2 chiffres

À SAVOIR : Si un champ contient la valeur nulle, rien ne sera affiché.

Selon le type de champs (date, numérique entier, numérique avec décimal, chaîne), la syntaxe de la chaîne de formatage est différente :

La codification des chaînes de formatage vient du langage python et peut être testée dans la console python d'ArcGIS Pro.

Champ de type date :

Les paramètres régionaux de formatage de date sont utilisés.

Sans chaîne de formatage, le format est du type 31/01/2021 13:00:00

La chaîne de formatage utilise la syntaxe de la fonction python datetime.strftime() (https://docs.python.org/fr/3.6/library/time.html#time.strftime)

Quelques exemples courants :

%x -> 31/01/2021

%X -> 19:00:30

%d-%m-%Y -> 31-01-2021

%H:%M:%S -> 23:59:00

Pour tester dans la console python :

import datetime

datetime.datetime.now().strftime("%x")

>> '11/05/2022'

Champs de type entier ou décimal :

La chaîne de formatage utilise la syntaxe de la fonction python locale.format_string()

Cela utilise les paramètres régionaux de formatage de nombre (c’est-à-dire la virgule comme séparateur décimal sur un poste en français).

%d affiche sous forme d'un nombre entier

%f affiche sous forme d'un nombre décimal

Exemples pour la valeur 12.5 :

%d -> "12"

%5d -> " 12"

%-5d -> "12 "

%05d -> 00012"

%.3f -> "12,300"

%8.3f -> " 12,300"

Sans chaîne de formatage,

- un entier sera transformé par locale.format_string("%d") : 12 -> "12"

- un nombre décimal sera transformé par locale.format_string("%f") : 12.3 -> "12,30000"

Pour tester dans la console python :

import locale

locale.setlocale(locale.LC_ALL)

locale.format_string("%.5f",12.5)

>> '12,50000'

Champ de type chaîne :

La chaîne de formatage utilise la syntaxe de la fonction string.format() (https://docs.python.org/fr/3.6/library/string.html#formatspec)

La chaîne de formatage ne doit pas contenir les {} attendus par string.format().

exemples : pour la valeur chaîne "abc"

:5 -> "abc"

:>5 -> " abc"

:^5 -> " abc "

Pour tester dans la console python :

"{:^5}".format("ab")

>> ' ab '

En cas d'erreur de configuration, l'atlas PDF sera tout de même généré :

- Si un nom de champ dans le texte dynamique n'existe pas dans la table de la demande, ce nom de champ sera remplacé par un message :

ERREUR de configuration, champ […] introuvable dans la table …)

- Si une chaîne de formatage est incorrecte, le nom de champ sera remplacé par le message du type :

(ERREUR de configuration, chaîne de formatage d'un nombre entier invalide (locale.format_string('...'))

Éléments masquables :

Les éléments d'une mise en page peuvent être masqués dans certaines conditions. Pour cela il faut leur ajouter un mot clef dans leur nom (comme pour le mot clef DYNAMIQUE que l'on ajoute pour les textes dynamiques)

Les mots clefs dans le nom d'un élément, doivent être séparés par des espaces.

Pour qu'un élément ne s'affiche pas si l'atlas ne contient qu'une seule page, il faut lui ajouter dans son nom le mot clef CACHE_SI_MONOPAGE

Pour qu'un élément ne s'affiche que pour un type de demande, il faut lui ajouter dans son nom le mot clef ONLY_ suivi du type de demande (DT, DICT ou ATU).

Par exemple :

- Pour qu'un élément ne s'affiche que pour les demandes de type DT, il faut qu'il ait dans son nom le mot clef ONLY_DT

- Pour qu'un élément ne s'affiche que pour les DT et DICT, il faut qu'il ait dans son nom les mots clefs ONLY_DT ONLY_DICT


Syntax

Parameter Explanation
Modele

Nom du sous-dossier contenant la description du modèle de format de mise en page à utiliser. Ce nom doit correspondre au nom d'un sous dossier présent dans le dossier des modèles.

Ce nom peut être A4, A3, A2, A1, A0

Il faut indiquer uniquement le nom du dossier contenu dans le dossier des modèles, et non pas le chemin absolu :

Par exemple, il faut indiquer A4 et non pas ...\Atlas\modeles\réseaux\A4

Le contenu d'un dossier modèle est décrit dans la partie Usage de l'outil de géotraitement.

Emprise (Optional)

Emprise de la zone à utiliser (sous forme d'un polygone encodé en JSON Esri).

Exemple :

Polygone de référence spatiale Lambert 93 :

{"rings":[[[263880.222,6730934.770],[264446.431,6730850.103],[264496.702,6730551.124],[264372.348,6730405.602],[264152.743,6730268.019],[263777.034,6730421.477],[263880.222,6730934.770]]],"spatialReference":{"wkid":2154}}

Polygone de référence spatiale WGS84:

{"rings":[[[-2.80201993,47.53450481],[-2.79443176,47.53411865],[-2.79347406,47.53146782],[-2.79498059,47.53007937],[-2.79775728,47.52869928],[-2.80288684,47.52982870]]],"spatialReference":{"wkid":4326}}

Echelle

Échelle à utiliser pour la carte :

-1 : utiliser l'échelle par défaut définie dans les modèles (fichier params.xml).

> 0 : échelle à utiliser pour générer l'atlas.

Remarque : -99 est une valeur particulière utilisée pour la publication de cet outil en tant que service de géotraitement ArcGIS Server. Avec cette valeur, aucun PDF ne sera produit, le traitement sera très rapide et pourra être utilisé pour publier le service de géotraitement.

Note : Pour que cet outil puisse être publié en tant que service de géotraitement par ArcGIS Server,

- Le fichier de connexion export_atlas.sde présent dans le dossier des modèles doit être inscrit dans ArcGIS Server.

- Le dossier des modèles (ou un de ses dossiers parents) doit être inscrit dans ArcGIS Server.

Table (Optional)

Pour les éléments dynamiques dans les modèles de mise en page, nom de la table à utiliser (dt, dict ou atu) pour aller chercher les valeurs à utiliser pour remplir les textes dynamiques dans les mises en page.

Ce nom de table est aussi utilisé pour masquer certains éléments de la mise en page qui ne doivent s'afficher que pour un type de demande particulier (voir dans la description de l'outil, Élément masquables)

Cette table doit être accessible par le fichier de connexion export_atlas.sde présent dans le dossier des modèles.

Requete (Optional)

Pour les textes dynamiques dans les modèles de mise en page, requête SQL à appliquer sur la table indiquée au paramètre précédent, pour sélectionner l'enregistrement dont les attributs seront utilisés pour remplir les textes dynamiques.

Prefixe

Préfixe du fichier PDF à produire. Par exemple DTDICT.pdf

Le fichier PDF sera produit dans le dossier temporaire (et son chemin sera indiqué en paramètre de sortie de l'outil).

Si un fichier nommé <préfixe> existe déjà, un nouveau nom sera généré (<prefixe>1.pdf, <prefixe>2.pdf...)

Code Samples

Tags

DT-DICT Export Atlas PDF arcOpole PRO

Credits

1Spatial


Use limitations