WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Automatisation et optimisation de chaàźnes de traitements visant à  consolider l'attribution d'informations géographiques aux bàątiments


par Nicolas DELORY
Université Montpellier II - Master Géomatique 2016
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

1

Université Montpellier 2/3 et AgroParisTech
Master Géomatique

2016 - 2017

Automatisation et optimisation de chaînes de traitements visant à consolider
l'attribution d'informations géographiques aux bâtiments

DELORY Nicolas

Rapport de stage
ForCity

Modélisation urbaine

Supervisé en entreprise par Emilie CORBI
et académiquement par Carmen GERVET

2

Table des matières

Introduction 1

Remerciements 2

Définitions et sigles 2

1) Présentation de l'entreprise ForCity 3

2) Choix du stage 3

3) Objectifs du stage 3

A. Compétences à mobiliser 3

B. Précision de la mission 3

C. Le data-set « usage des bâtiments » 3

Solution de géocodage de masse et Snapping 1

Le géocodage 3

1.1 Définition et précision du besoin 6

A. Définition du géocodage 3

B. Le rôle du géocodage 3

C. Les besoins de ForCity 3

1.2 Etat de l'art 6

A. Benchmarking des solutions 3

B. Démarche des tests 3

C. Résultats des tests 3

1.3 Les solutions internes 6

A. Présentation des solutions internes 3

B. Choix de la solution 3

C. Fonctionnalités et limites de la solution 3

1.4 Les solutions internes 6

A. Initiation au scripting en python et à la librairie Pandas 3

B. Mes améliorations sur l'outil geoloc_csv 3

C. Limites des améliorations et optimisations possibles 3

Le snapping aux bâtiments 3

2.1 Définition et précision du besoin 6

A.

3

Définition du Snapping 3

B. Précision du besoin 3

C. Zones de tests 3

2.2 Méthodes et processus 6

A. Snapping des activités commerciales sur la porte des Alpes 3

B. Snapping des activités commerciales sur la zone du centre-ville de Lyon 3

C. Snapping des activités industrielles sur Vaulx-en-Velin 3

2.3 Conclusion sur le Snapping 6

La ventilation 1

La ventilation de la surface salariale aux bâtiments 3

1.1 Les conditions initiales 6

A. Résultat du workflow et limites 3

B. La ventilation 3

1.2 Méthodologie et étapes de développement 6

A. Les contraintes à respectés 3

B. Technologies et librairies employées 3

C. Méthodologies et étapes de développement 3

1.3 Retour d'expérience 6

A. Difficultés rencontrés et résultats 3

B. Limites et pistes d'améliorations possibles 3

Conclusion 1

Annexes 1

4

1 Introduction

Au cours du XXème et XXIème siècle, l'évolution de la population urbaine a connu un essor sans précédent. Les villes où grandes aires urbaines rassemblent aujourd'hui près de 60 % de la population en France, soit 37,8 millions d'habitants. Au niveau international, la population des villes représentait 30% de la population mondiale en 1950, 54% en 2014 et avec le développement des pays émergents on estime qu'en 2050, 70% de la population mondiale vivra en milieu urbain (OCDE, 2012).

S'imposent alors des interrogations et réflexions associées au développement du tissu urbain.

« Les questions de l'étalement urbain (périurbanisation) et de l'organisation réticulaire des espaces urbains alimentent les réflexions sur la fin de la ville ou la ville émergente » (A. Hertzog, A. Sierra)

En effet, les dirigeants et décideurs des villes voient nombres de leurs responsabilités augmenter. Face aux contraintes sociales et à des pressions environnementales ou économiques grandissantes, les décideurs publics et privés sont confrontés à la complexité de l'évolution urbaine. La ville est un système complexe, les projets de modification urbaine affectent les réseaux de transports, d'alimentation de la ville en énergie, eau et donc la performance générale de la ville. De plus, la somme des comportements individuels semble rendre tout cela imprévisible.

Ces décideurs, politiciens et grandes entreprises font aujourd'hui appel à de nombreuses compétences pour pouvoir répondre entièrement aux besoins des villes. En effet, la connaissance approfondie d'un phénomène urbain isolé n'est plus suffisante. Il est nécessaire aujourd'hui de connaître les interactions entre les problématiques de la ville afin de mieux prévoir les impacts d'un projet.

Pour imaginer la ville de demain et la numérisée, des outils peuvent être mis en place. Ces outils fonctionnent avec la nouvelle « matière première » de notre temps, la donnée numérique, qui en est l'essence. La donnée numérique constitue le nouvel or, cependant comme toute matière première elle nécessite d'être remaniée, consolidée, transformée... ceci afin de pouvoir travailler avec, visualiser des phénomènes ou bien extrapoler des phénomènes futures. C'est là le dessein de ForCity, proposer des outils qui permettent via l'absorption de multiples données de modéliser des projets urbains futurs.

Ce travail porte sur l'ensemble des processus mis en oeuvre pour utiliser la donnée, et particulièrement les mécanismes mis en jeu pour rattacher l'information géographique à l'échelle du bâtiment.

5

1.1 Remerciements

Je souhaiterai remercier ma tutrice universitaire Carmen Gervet pour avoir accepté d'encadrer ce stage, ainsi que mon tuteur au sein de l'entreprise Remy Martin pour son accueil.

Je tiens particulièrement à remercier Amaury Valorge, qui m'a accompagné et guidé durant mon stage, nos réunions régulières m'ont permis d'avancer méthodiquement afin de mener à bien ce travail.

Je remercie également ma tutrice de stage Emilie Corbi pour m'avoir fourni des missions très enrichissantes et pour m'avoir fait partager ses connaissances en géomatique.

Je remercie aussi Thomas Leysens que j'ai sollicité pour la première partie de mon stage et qui a été disponible pour moi.

Enfin je remercie également toutes les autres personnes de ForCity de Lyon avec lesquelles j'ai pu échanger, et qui ont su se rendre disponible pour m'apporter leur aide et leurs conseils lorsque j'en avais besoin, ainsi que me partager leur bonne humeur.

1.2 Définitions et Sigles

SPoC (Synthetic Population Creation) : Modéle de localisation et caractérisation des individus dans des ménages qui sont eux-mêmes localisés dans des logements.

TULIP (Transport Urban Landuse Integrated Planing) : Modèle Forcity de la dynamique du territoire. DYNEX( Dynamix Expertise) : Modèle simplifié et agrégé du modèle TULIP.

Pandas : librairie du langage de programmation python permettant de travailler facilement sur les données.

Geopandas : extension de Pandas permettant le géotraitement. Psycopg2 : un adaptateur python-base PGSQL

Yed : éditeur de graphique.

API : Interface de programmation. En informatique, une interface de programmation applicative (souvent désignée par le terme API pour Application Programming Interface) est un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels.

6

1.3 Présentation de l'entreprise ForCity

ForCity est une start-up créée à Lyon en janvier 2014. L'ambition de cette jeune entreprise est mondiale mais elle se développe tout d'abord dans le tissu entrepreneurial lyonnais. Elle est constituée d'une grande diversité de profils : parcours R&D consacrés à la modélisation systémique des territoires mélangeant des équipes expertes en géomatique, modélisation (transport, eau, déchets et énergie) et management de l'innovation.

Cette start-up offre aux services publics et privés un outil d'aide à la décision. Cet outil est matérialisé par un accès à une plateforme de simulation. C'est une carte 3D interactive contenant des informations géolocalisées. Des informations relatives au transport, à l'eau, à l'énergie et aux déchets peuvent être affichées via différents indicateurs. L'intérêt de cette plateforme est de pouvoir effectuer des simulations : il s'agit d'évaluer l'influence des évolutions possibles de certains paramètres sur les valeurs de ces indicateurs. Par exemple, en connaissant le flux de circulation routier du Cours Lafayette, il est possible d'en déduire les fuites de ce flux vers les autres rues et donc de déterminer quels impacts les ralentissements matinaux de 8h30 du Cours vont avoir sur la Rue Garibaldi. Cela constitue le coeur de métier de ForCity, elle met les données et la technologie au service des décisions qui engagent l'avenir : construire une nouvelle ligne de métro pour soulager les ralentissements du Cours Lafayette.

L'évolution urbaine résulte d'une myriade d'interactions entre les individus, les projets, les infrastructures et les services. Pour anticiper cette évolution, il ne suffit pas de s'appuyer sur une expertise sectorielle, mais il faut oser répliquer numériquement cette complexité, et pouvoir impliquer les acteurs eux-mêmes dans le processus. L'ambition de ForCity, c'est de proposer un outil permettant de simuler des projets, des infrastructures, des services, et des individus sur un territoire et d'étudier leurs interactions dynamiquement afin de pouvoir créer des solutions durables. L'intérêt majeur réside dans la capacité à modéliser le système complexe qu'est la ville, et de restituer des résultats sous une forme digeste.

ForCity est constituée de plus d'une soixantaine de personnes divisée en différents pôles. La répartition est donc faite selon la liste suivante :

- Direction

- Ressources Humaines et Services Généraux

- Marketing, Communication, Commerce et Consulting

- Production

- Développement

Les pôles Production et développement sont les pôles techniques. La production concerne la création de la carte interactive 3D, des visuels, et de la récupération et traitement de données, c'est un pôle de géomatique. Le développement concerne la création de modèles de calculs prévisionnels et de la plateforme de stockage des modèles et de la donnée, c'est un pôle de modélisation et de développement logiciel.

7

Figure 1 : Organigramme simplifié de ForCity

Cette jeune entreprise développe des modèles de calculs qui peuvent être couplés, permettant ainsi de représenter des phénomènes complexes. Ces modèles sont validés à l'aide de données réelles. La plateforme de simulation est un outil de partage et de visualisation pour les clients. ForCity améliore son expertise de la ville au grès des différents projets, et vise à se rapprocher petit à petit d'un modèle numérique multi-systémique complexe.

ForCity possède deux particularités majeures, la première est audacieuse et suscite l'enthousiasme, il s'agit de sa capacité à travailler à différentes échelles temporelles et spatiales. La ville est son terrain de jeu, or cela entraine des contraintes techniques. Les modèles se doivent par exemple d'être suffisamment performants pour que leurs temps de calculs restent relativement courts. La seconde particularité de ForCity concerne l'esprit collaboratif qu'elle développe avec ses clients. ForCity met à disposition un lieu de partage protégé de données, ce qui permet de capitaliser des données de terrain réutilisable. Ainsi, cette jeune entreprise développe un double intérêt à toucher tous les secteurs de marchés.

1.4 Choix du stage

Lors de ma recherche de stage, mes principaux critères d'intérêt se trouvaient dans la manipulation de données numériques, la modélisation ainsi que la gestion de ces données, ainsi que la possibilité d'accroître mes compétences en développement informatique. Lorsque j'ai pris connaissance de l'offre que proposait ForCity, j'ai tout de suite été intéressé et leur ai donc fait part de ma motivation pour le sujet proposé durant les différents entretiens qui ont constitué mon recrutement. D'autre part, le fait que ForCity soit une start-up m'a réconforté dans mon choix, le climat régissant ce type d'entreprise m'attirant tout particulièrement.

Une problématique mobilisant des compétences en gestion de données géographiques

De par ma formation en géographie, j'ai été sensibilisé aux différentes évolutions dont les villes sont sujettes. Pour ma part, c'est une problématique que je trouve passionnante et grâce à mon stage au

8

sein de ForCity, dont l'essence même est l'évolution de la ville, je pouvais être sûr de participer à un projet dont les tenants et aboutissants correspondent à mes attentes. En effet, un des points principaux du stage proposé consistait en l'élaboration de chaines de traitements permettant de constituer des « data set » alimentant des modèles prospectifs d'aménagement du territoire. Plus particulièrement, sur un data set qui porte sur l'usage détaillé des bâtiments.

Un sujet portant sur l'infrastructure des données et la précision du géocodage

Un des points important du stage consistait au traitement de données au préalable, notamment avec une partie géocodage. L'entreprise ayant des besoins ponctuels mais réguliers de géolocalisation d'adresses, une partie de ma mission consisterait à choisir une solution de géocodage adéquate au besoin de ForCity, c'est-à-dire au géocodage de masse (volume important d'adresses à géocoder).

J'ai appris lors de mes entretiens que la mission consisterait à effectuer un état de l'art des solutions actuelles existantes au niveau web service mais aussi au niveau local, où des solutions ont été développées individuellement par certains employés, mais non testées. Il y avait également possibilité de modifier, le cas échéant, les solutions crées localement afin de leur apporter des fonctionnalités. La 2em partie de la mission consisteraient à l'affectation des informations géocodées à l'échelle du bâtiment via des méthodes de snapping de points, que je préciserai au cours du rapport.

J'ai également été prévenu lors de mes entretiens que je serai probablement assigné à diverses tâches selon les besoins circonstanciels induit par les différents projets.

Possibilité d'accroître mes compétences en développement informatique

Les tendances actuelles montrent que nous nous dirigeons vers un monde de plus en plus numérique. En effet, les outils à notre disposition pour modéliser ou numériser notre environnement afin de le comprendre plus aisément dans sa globalité, sont de plus en plus nombreux et performants. Je pense pour ma part qu'en tant qu'apprenti géomaticien contemporain, il convient de renforcer ses compétences en termes de développement informatique.

D'une part car la majorité des outils à notre disposition sont « customisables », c'est-à-dire qu'ils peuvent être agrémentés de fonctionnalités multiples selon les besoins de ses utilisateurs, ceci à condition d'avoir un certain bagage en développement informatique.

D'autre part car il me semble que dans ce monde de plus en plus numérique, l'acquisition de compétences en développement informatique ne peut être qu'un plus, et renforcer la casquette pluridisciplinaires qui fait office de force pour le métier du géomaticien.

9

1.5 Objectifs du stage

1.1 Compétences à mobiliser

Dans le cadre de mon stage, il m'a été attribué un sujet de recherche sur lequel je devais travailler principalement, en addition aux besoins ponctuels de l'entreprise de main d'oeuvre pour certaines tâches induites par les projets.

Ces missions principales consistaient en :

· La mise en place d'une chaine de traitements pour géocoder en volume (fichier contenant des milliers de lignes)

· Consolidation et optimisation d'une méthode d'affectation des informations géocodées sur les bâtiments à proximité

· Consolidation et optimisation de la chaîne de traitements : subdivision territoriale

· Création du socle territorial (ensemble de données composant un territoire) sur des agglomérations françaises ou étrangères

Il me faudrait donc mobiliser nombreuses compétences acquises lors de ma formation et d'autres, telles que :

· Des notions en programmation, particulièrement en Python et SQL

· La manipulation des logiciels SIG ARCGIS, QGis, et FME

· La manipulation et consolidation de données

· La création de données pour un socle territoriale

1.2 Précision de la mission

A mon arrivé au sein de ForCity, j'ai été reçu par mon maître de stage monsieur R. Martin. Celui-ci m'a précisé dès lors les objectifs principaux de mon stage. Je serai affecté premièrement à une mission de benchmarking des différentes solutions de géocodages existantes, en effectuant un état de l'art, puis un test de ces différentes solutions.

Il m'a également été rapporté qu'au sein de l'entreprise, deux solutions ont été développés localement, mais pas encore testées. Il me fallait alors convenir d'un entretient avec leurs développeurs respectifs, pour comprendre le fonctionnement des applications, les testées et voir s'il y a possibilité de les améliorer en leur implémentant d'autres fonctionnalités.

Ma deuxième mission prioritaire concerne l'affectation des données qui ont été géocodées. Plus précisément, la consolidation et l'optimisation d'une méthode d'affectation des informations géocodées aux bâtiments à proximité. On parle ici de technique de « Snapping », que je détaillerai au cours du rapport.

Pour conclure, mes tâches seront essentiellement concentrés sur le data-set « usage des bâtiments » de l'entreprise ForCity. Ce sont des sets de données qui visent à alimenter des modèles prospectifs d'aménagement du territoire.

10

1.3 Le data-set « usage des bâtiments »

La chaîne de traitement Building_Use (ou usage des bâtiments) permet de définir pour chaque bâtiment le ou les usages qui l'occupent, que cet usage relève d'une activité économique, d'un équipement ou d'une occupation résidentielle. Chaque usage étant associé à une surface d'occupation et, éventuellement d'un effectif d'emploi ou de ménages et d'habitants. Ces usages doivent être définis afin d'alimenter les modèles TULIP et DYNEX. Le workflow est développé sous FME et fonctionne en trois temps :

- Identification des usages autres que résidentiels principalement en s'appuyant sur les usages. - Génération des bâtiments et locaux d'habitats par SPOC, ainsi que définition des ménages et des personnes.

- Consolidation des données pour les besoins de chacun des modèles.

Le workflow doit permettre de définir au mieux :

- les usages des bâtiments d'un territoire ainsi que les surfaces occupées par ces usages (usages

résidentiel comme usages d'activité).

- les emplois associés aux bâtiments d'un territoire.

- les ménages et les personnes composant ces ménages.

Le workflow traite les usages par grandes catégories d'usages. Ce type de traitement permet de filtrer au fur et à mesure des workflows, les entités en fonction des usages déjà déterminés. Un premier workflow permet de créer la base bâti de référence, de formater et consolider les données SIRENE, les zones d'exclusion et de définir les usages de type indéterminé liés aux bâtiments trop petits.

Les workflows suivants traitent les différentes catégories d'usages. Pour chaque workflow, on ramène les précédents résultats aux bâtiments afin de filtrer les bâtiments dont les usages sont incompatibles. Les points définissant les usages sont snappés soit au bâtiment, soit à la parcelle, soit à la zone d'activité (cela dépend de la catégorie d'activité). La dernière étape consiste à formater les données en fonction du modèle que le workflow devra alimenter. Pour le modèle DYNEX, les données sont consolidées au bloc. Pour le modèle TULIP Expert, les données seront consolidées au bâtiment.

11

2 Solutions de géocodage de masse et Snapping

2.1 Le géocodage

1.1 Définition et précision du besoin

A. Définition du géocodage

Premièrement, commençons par définir ce qu'est le géocodage au sens propre.

« Le géocodage consiste à affecter des coordonnées géographiques (latitude/longitude) à une adresse postale. Ce procédé conduit à la mise en place de traitement automatisés de manière ponctuelle ou sur des fichiers d'adresses (individus, entreprises, points d'intérêt, etc.).

Les coordonnées géographiques permettent de situer chaque adresse sur une carte numérique via un Système d'Informations Géographiques (SIG). Le géocodage est une des techniques de géolocalisation

ou de géoréférencement. » Source : Wikipédia

Je trouve cette définition appropriée pour une définition générale. Cependant, il me semble que celle-ci ne fournit pas assez de détails quant au processus mis en jeu. J'ai trouvé cette définition sur un site de statistique Canadien :

Le géocodage est le processus utilisé pour attribuer des identificateurs géographiques (codes ou coordonnées x,y) aux détails cartographiques et aux enregistrements de données. Les géocodes ainsi créés permettent d'apparier géographiquement les données à un endroit sur la terre.

Les ménages, les codes postaux et les données sur le lieu de travail sont appariés aux points représentatifs (coordonnées) de côté d'îlot lorsque la rue et l'adresse sont connues, autrement ils sont appariés aux points représentatifs d'îlot de diffusion (ID). En certain cas, les codes postaux et les données sur le lieu de travail sont appariés aux points représentatifs d'aire de diffusion (AD) lorsqu'il n'est pas possible de les apparier aux ID. De plus, les données sur le lieu de travail sont appariées aux points représentatifs de subdivision de recensement lorsqu'il n'est pas possible de les apparier

aux AD. » Source : Statistique Canada

Cette définition du géocodage, malgré qu'elle ne puisse être utilisée comme définition globale étant donné qu'elle utilise des termes propres à la région canadienne (îlot et aire de diffusion), me parait pertinente. Tout d'abord parce qu'elle ne limite pas le géocodage à une affection de coordonnées géographiques sur une adresse postale, mais aussi parce qu'elle apporte plus de détails sur le procédé en question. En effet le géocodage, peu importe la région sur terre, utilise des échelles géographiques comme niveau de détail et de perfectionnement du résultat. Le mécanisme cherche le plus haut niveau de détails pour affecter les coordonnées, s'il ne trouve pas, il attribuera l'adresse à une échelle plus grossière. En France, les niveaux de détails du géocodage sont les suivants, du plus précis au moins précis (attention, tous les géocodeurs ne permettent pas forcément ce niveau de détails) :

1. Au pays, département, ou à la commune (voire à l'arrondissement) : le point retourné est situé au centroïde de l'entité concernée.

2.

12

Au centroïde de la voie : lorsque le numéro n'est pas connu, le point se situe au centre de la voie.

3. À l'interpolation du tronçon : le géocodage au n° dans la rue est fait par technique d'interpolation. La base de données référentielle préalablement localisée comprend une adresse pour chaque segment de rue, ainsi que ses quatre bornes de numérotation (Bornes inférieures/supérieures des numéros pairs/impairs). Le géocodage interpole la position du numéro de la rue à partir des bornes du référentiel sur le dessin de la rue.

4. À la plaque : certains référentiels d'adresse disposent de l'emplacement exact de la plaque mentionnant le numéro de l'immeuble ou de la maison (comme base "Point Adresse" de l'Institut Géographique National).

B. Le rôle du géocodage

Le géocodage est utile dans de nombreux domaines de nos jours, il permet de trouver différents type d'emplacements.

Les types d'emplacements recherchés sont notamment les points d'intérêt ou les noms issus d'un répertoire géographique ainsi que les adresses, qui peuvent adopter différents styles et formats, notamment les intersections de rues, les numéros de domicile avec les noms de rue, et les codes postaux. Deux grandes catégories d'usage apparaissent pour les géocodeurs :

? Le géocodage à la volée. La validation éventuelle est alors demandée au compte-goutte. Il correspond à l'usage quotidien des sites comme google maps par les particuliers. Il est ainsi utilisé dans les interfaces homme machine.

? Le géocodage de masse. Un maximum d'adresses sont géocodées automatiquement. L'ensemble des adresses non géocodées, appelés rejets, doivent alors être traités une par une par un opérateur. Ce système peut être utilisé lorsque des adresses sont échangées entre deux organisations. Il est ainsi utilisé dans les interfaces machine-machine.

C. Les besoins de Forcity

Pour l'entreprise ForCity, le type d'usage de géocodage utilisé est le géocodage de masse. En effet, ForCity utilise un grand nombre de données de toutes sortes provenant de plateforme territoriales denses, à l'échelle des grandes agglomérations, des départements, régions, etc... Plus particulièrement sur les territoires de l'île de France, les agglomérations de Lyon et Rouen, ainsi que Hong Kong à l'étranger.

Pour les besoins de l'entreprise, il est nécessaire de géocoder ces données le plus précisément possible. Il faut savoir que la précision en France du géocodage est moindre, ceci notamment dû au

13

fait qu'un même code postal couvre un très grand nombre d'adresses (en opposition avec le système anglais, où chaque code postal correspond à une adresses unique géo-référencée).

Comme dis précédemment sur les précisions de ma mission, j'ai dû travailler sur le data-set usage du bâtiment. Autrement dit, travailler à l'échelle du bâtiment, et importer les informations des données géocodées sur les bâtiments correspondants. Hors le géocodage ne permet pas un tel degré de précision. Il y a donc une seconde étape à effectuer pour récupérer ces données et les affectés au bâtiment à proximité. Cette étape se nomme le « Snapping », je détaillerai cette étape plus tard dans le rapport.

Néanmoins, la précision obtenue en sortie du géocodage est véritablement importante car elle simplifie fortement l'opération de Snapping obligatoire qui suit.

Pour résumer, l'entreprise doit mobiliser une solution capable de:

D. Géocoder massivement un fichier d'adresses comportant des centaines de milliers d'entités

E. Obtenir un degré de précision satisfaisant sur l'ensemble de l'opération

F. Géocoder un grand nombre d'adresses avec un temps de traitement raisonnable

1.2 Etat de l'art

A. Benchmarking des solutions

Pour commencer ma tâche sur le thème du géocodage, j'ai dû effectuer un état de l'art des diverses solutions existantes à ce jour. Etant donné l'utilité du géocodage dans de nombreux domaines, il existe une multitude solutions à ce jour qui permettent de géocoder des adresses. Ces solutions se divisent tout d'abord en deux catégories, les solutions gratuites et les solutions payantes.

Pour ma tâche, je me suis intéressé aux diverses solutions qui permettent de géocoder sur le territoire français, selon les besoins de ForCity (ces besoins sont focalisés sur le territoire français, et non sur les territoires étrangers). Il en existe de nombreuses, il m'a été demandé de favoriser les solutions non payantes, tout en ne négligeant pas une solution payante si le rapport coût/efficacité me paraissait satisfaisant.

B. Démarche des tests

Tous les tests que j'ai réalisés ont été effectués à partir d'un fichier CSV qui correspond aux adresses SIRENE. En effet, les données qu'il fallait géocoder au niveau du bâtiment correspondent aux données Sirène de l'Insee, disponibles sur : http://www.sirene.fr/sirene/public/accueil

Les données du répertoire SIRENE portent sur l'ensemble des établissements qui ont une activité sur le territoire Français. Comme je l'ai précisé précédemment, ma mission est focalisée sur le data-set

14

« usage des bâtiments », les données SIRENE alimentent en grande partie ce data-set notamment pour certains secteurs d'activités comme l'industrie. D'autres sources de données plus spécifiques ont été privilégiées pour d'autres secteurs, comme par exemple le RES1 pour les équipements sportifs, ou encore les données FINESS2 pour les établissements hospitaliers.

L'échantillon sur lequel j'ai testé les différentes solutions comprend les adresses de commerces basées sur le 7ém arrondissement Lyonnais, environ 14 000 adresses. Pour chaque solution, j'ai donné le temps de traitement ainsi que le degré de confiance du résultat obtenu si cela est possible.

J'ai détaillé au possible l'obtention des chiffres qui représentent le degré de confiance, qui dépend du géolocaliseur utilisé. Le but de l'opération étant de comparer les différentes solutions testées pour cibler celles qui pourraient être susceptibles de subvenir aux besoins de l'entreprise en termes de géocodage.

C. Résultats des tests

Le site gouvernemental

-Temps de traitement : environ 4 minutes pour obtenir le CSV géocodé.

- Degré de confiance :

Nombre d'adresses

Intervalle des degrés de confiance

Pourcentage

373

20% à 40%

2,6

216

40% à 60%

1,5

8642

60% à 80%

61,9

6547

80% à 90%

46,9

Tableau 1: Degré de confiance de l'API Gouvernementale

Le degré de confiance est censé représenté la pertinence du résultat obtenu après l'opération de géocodage. Pour l'API du gouvernement, c'est une note comprise entre 0 et 1, plus elle est proche de 1, plus haute est la précision.

Le code du moteur de géocodage de l'API est basé sur un outil du nom d'Addok. Celui-ci ne donne pas vraiment d'explication sur le calcul de la précision des adresses géocodées.

1 Recensement des équipements sportifs disponible sur le site du RES

2 Sélection d'informations sur les établissements sanitaires, sociaux, médico-sociaux, et de formation aux professions de ces secteurs

Distribution des adresses par degré de précision

20% à 40% 40% à 60% 60% à 80% 80% à 90%

15

Figure 2: Diagramme degré de précision de l'API Gouvernementale

L'API de l'IGN

Cette API offre la possibilité de géocoder des adresses en ligne directement sur une API à l'adresse : https://mesadresses.ign.fr/geocod/

Cette API est limitée au géocodage de 100 000 adresses sur 30 jours, et offre la possibilité de sauvegarder ses résultats (donc la base d'adresses géocodée) si l'on possède un compte utilisateur. En ce qui concerne la précision du résultat, l'API assure une finesse de précision élevé car basé sur les données de l'IGN. Je n'ai pas jugé utile de joindre les résultats obtenu étant donnés que l'API de l'IGN requête sur la BAN, comme l'API du gouvernement, les degrés de précision sont les mêmes. Il y a également possibilité de déplacer les marqueurs manuellement, et d'ajouter des adresses sur l'interface graphique qu'offre le logiciel.

Le temps de traitement sur l'échantillon du fichier SIRENE (13992 adresses) est d'environ 28 minutes.

L'outil TestGéocoder

Celui-ci semble plus long pour effectué les traitements de géocodage.

-Temps de traitement pour 2000 adresses et leur affichage: environ 90 minutes.

16

-Précision du géocodage : elle est attribuée par une note (colonne accuracy) qui va de 0 à 8 :

· 0 : Non trouvé

· 1 : Pays

· 2 : Région

· 3 : Sous-région

· 4 : Ville

· 5 : Code-Postal

· 6 : Rue

· 7 : Intersection

· 8 : Adresse

Possibilité de géocoder 375 adresses par jour.

La solution ne semble clairement pas adapté/adaptable à du géocodage de masse.

Les packages Nominatim et Photon(Python)

Il existe une possibilité de géolocaliser en masse grâce au logiciel R et un certain nombre de packages python, notamment les packages Nominatim et Photon qui sont disponibles sur GitHub. Cette solution est basé sur les données OSM et l'Open Data, même s'il est possible sous réserve de bien maîtriser les outils de travailler avec une autre source de données telle que la BAN.

Les résultats donnés par Nominatim et par photon ne sont pas les mêmes. Nominatim semble beaucoup mieux répondre à des requêtes structurées tandis que photon semble mieux s'en sortir quand les requêtes sont un peu floues. Cela est probablement dû au moteur de recherche employé par photon, conçu pour la recherche par auto complétion (et entre autre basé sur les algorithmes n-grams).

Je n'ai pas eu le loisir de tester cette solution, notamment dû aux connaissances confirmées en langage R et Python qu'imposent cette solution.

Source : http://rgeomatic.hypotheses.org/622

Le plugin QBAN(0)

Ce plugin de QGIS permet de géolocaliser vos adresses issues d'un fichier excel ou CSV. Il se sert de la base BAN (Base Adresse Nationale).

Le fichier des adresses doit être ouvert dans Qgis. L'adresse doit être contenue dans une seule colonne (numero, rue, code postal, ville). Une fois la géolocalisation effectuée, une colonne "score" permet de connaitre la fiabilité de l'adresse, 1 étant la meilleure note (à partir de 0,5, la localisation est fiable).

17

J'ai testé ce plugin sur un échantillon de 2000 adresses du fichier Sirene, voici les résultats : - Temps de traitement : environ 2 minutes.

- Degré de précision du traitement :

Voir les figures 3 et 4 en annexes.

Les autres solutions

J'ai pu tester d'autres solutions de géocodages, qui sont disponibles en annexes. Parmi celles-ci, des solutions web services gratuites comme les précédentes, mais aussi un listing de solutions payantes avec leurs caractéristiques.

1.3 Les solutions internes

A. Présentation des solutions internes

Au sein de ForCity, deux solutions de géocodage de masses ont été développées. Une des solutions par Mr. Leysens Thomas se nommant geoloc_csv, et l'autre par Mr. Valorge Amaury se nommant Mass_Geocoder. J'ai obtenu un premier entretien avec Thomas, afin qu'il m'explique les tenants et aboutissants de sa solution, qui se nomme geoloc_csv, puis un second entretient avec Amaury pour les mêmes raisons.

Caractéristiques de la solution geoloc csv :

Cet outil a été développé en interne par Mr Leysens Thomas. Il permet à l'aide d'un script python d'interroger un serveur local où distant (data Gouv). On lui fournit un fichier de format CSV en entrée, puis on récupère ce même fichier géocodé en sortie avec un certain nombre d'informations et statistiques sur la qualité et la précision du géocodage. Le script est quant à lui basé sur l'API gouvernementale disponible à l'adresse suivante : https://adresse.data.gouv.fr/api/

Attention, l'utilisation de cette base de données implique le respect de sa licence d'utilisation : https://www.vvlibri.org/fr/licence/odbl/10/fr/legalcode#Droits cedes par la licence/

Il faut savoir que l'API du gouvernement utilise un géocodeur open source qui se nomme Addok. Cependant, le site est limité à une utilisation d'un fichier CSV de 6mo, ce qui ne permet pas d'effectuer un géocodage de masse sur un fichier de plusieurs milliers d'entités. C'est donc pour cette raison que geoloc_csv est né. En effet, cet outil (script) permet de passer au-delà de la limite imposé par le gouvernement. Comment est-ce possible ? Simplement en important la BAN(O) ou la BAN sur un serveur local. De cette manière, les contraintes de limitation imposées par la plupart des solutions web sont contournées. De plus, les requêtes sur les adresses sont locales et non distantes, ce qui permet

18

en théorie de gagner en performance sur les temps de traitement. L'outil se lance sur un terminal en se plaçant dans le dossier geoloccsv en l'appelant de la façon suivante :

L'option -h permet de lancer le programme avec l'aide. Il s'agit ensuite de lui fournir des paramètres, qui correspondent aux champs utilisés pour le géocodage. Néanmoins, il y a des inconvénients à cette méthode, le principal étant le poids de la BAN à importer sur le serveur local. Un 2em inconvénient d'un ordre plus juridique est l'utilisation que l'on peut faire ou non du produit sortant de geoloc_csv, d'où l'intérêt d'informer son utilisateur quant aux licences d'utilisation en question.

Par conséquent, nous avons (Thomas et moi-même) décidé d'implémenter au code un message à l'intention de l'utilisateur de geoloc_csv mentionnant l'l'utilisation de la BANO et la référence à sa licence d'utilisation (comme précisé sur l'article 4.3 de la licence).

Caractéristiques de la solution Mass Geocoder :

Cet outil a été développé en interne par Mr Valorge Amaury. Son principe de fonctionnement est très semblable à celui de geoloc_csv, c'est aussi un script écrit en python et qui est basé sur le code de l'API du gouvernement. La différence de ce script est qu'il évolue dans l'environnement QGIS, c'est-à-dire qu'il se lance sur une console QGIS, à l'aide d'un plugin se nommant ScriptRunner, celui-ci permet d'exécuter un script externe dans QGIS.

Lors de mon entretient avec Amaury, j'ai appris qu'il n'avait pas pu tester sa solution et qu'elle risquait de ne pas être fonctionnelle. Effectivement lorsque j'ai tenté un test pour la première fois, cela n'a pas fonctionné. Ceci en raison de ma version de QGIS qui était antérieure à celle sur laquelle Amaury avait développé sa solution.

Je ne détaillerai pas plus cette solution étant donné que les mécanismes mis en jeu sont très sensiblement les mêmes que pour la solution précédente, à la différence de l'environnement d'exécution du programme.

5. Choix de la solution

Après avoir étudié et tester un certain nombre de solutions, il se trouve que nombre d'entre elles ne soient pas conçues pour le géocodage de masse, mais plus en tant que service ponctuel pour ses utilisateurs via un outil de type web service.

Pour les solutions qui supportent le géocodage de masse, elles sont pour la plupart limitées à un seuil d'utilisation (google maps, osm, API de l'IGN, etc...). Il m'a paru intéressant de me pencher sur une des solutions qui ont été développés au sein de l'entreprise.

D'une part car celle-ci répondrait plus efficacement aux besoins de la dite entreprise car elle a été conçu pour. D'autre part, ces solutions qui sont en réalité des scripts écrits en python permettent une liberté de manoeuvre en ce qui concerne leur customisation (optimisation du processus, ajouts de fonctionnalités...). Enfin, pour une raison plus personnelle, la possibilité d'une amélioration d'une des solutions internes me permettrait de me plonger dans le développement en python et ainsi améliorer mes compétences.

19

Par ailleurs, les résultats du géocodage obtenus avec ces solutions internes sont similaires à ceux obtenus via l'API du gouvernement, c'est en France ce que l'on peut obtenir de mieux en terme de précision (requête sur la BAN), avec les services de Google et OSM également.

Pour toutes ces raisons, j'ai choisi de me pencher sur une solution interne. Il fallait alors choisir une des deux solutions. J'ai donc opté pour la solution de Thomas, geoloc_csv. Premièrement, cette solution s'exécute sur terminal et ne nécessite aucun logiciel externe pour fonctionner, simplement les dépendances en termes de librairies pythons doivent être satisfaites, mais c'est aussi le cas pour l'autre solution interne. Deuxièmement, geoloc_csv était à quelques détails près fonctionnel avant même mon arrivée (Thomas avait dû développer la solution dans le cadre d'un projet plus large auparavant). Et pour finir, d'un point de vue plus pratique, Thomas était durant la période du début de mon stage plus disponible qu'Amaury, ce qui facilitait les entretiens pour les nombreuses questions que j'avais à propos du script.

6. Fonctionnalités et limites de la solution

Comme je l'ai précisé précédemment, la solution geoloc_csv s'exécute sur un terminal où un quelconque interpréteur python. A supposé que les dépendances envers les librairies soient satisfaites, il suffit de lancer le script avec un certains nombres de paramètres :

- Les champs utilisés pour le géocodage ? Correspondent aux champs Rue, Numéro, Ville et

Code postal

- Le nom du fichier CSV en entré qui contient les adresses à géocoder

- Le serveur sur lequel les requêtes vont être effectuées ? Serveur local ou distant

- Le nom du fichier CSV en sortie

Il faut savoir que l'utilisation de l'outil nécessite un prétraitement des données en entrée afin que les champs utilisés soient conformes (split de l'adresse, utilisation de la casse majuscule, pas de bis, pas de numéro dans le champ ville...) et que le géocodage s'effectue dans les meilleures conditions.

Ceci constitue une première limite à cette solution, le prétraitement des données pouvant coûter à l'utilisateur un temps plus ou moins long selon la qualité des données en entré. Une deuxième limite, inhérente à la plupart des solutions de géocodage, est le fait que les adresses qui n'ont pas été géocodées ne sont pas directement récupérables dans un second fichier CSV qui contiendrait ces adresses. En effet, si tel était le cas, l'utilisateur aurait alors la possibilité de tenter un second géocodage de ces adresses à l'aide d'une nouvelle solution. Etant donné que la plupart des adresses du fichier original auront été géocodé, il est probable que le reste des adresses soit en nombre assez restreint pour passer la limitation imposée par les web services proposant un géocodage performant comme celui de Google.

A la fin du processus, plus ou moins long selon le nombre d'adresses à géocoder, nous récupérons un fichier CSV des adresses qui ont été géocodées avec des informations sur la qualité du géocodage. L'outil créer un champ result avec l'adresse géocodée, ainsi que le niveau de précision du géocodage (street, housenumbers...)

Pour la prochaine étape, mon but était donc d'améliorer le script pour lui ajouter les fonctionnalités qui comblerait ces limites au mieux où diminuerait leur impact au cas échéant.

20

1.4 Mes améliorations

A. Initiation au Scripting en Python et à la librairie Panda

De par ma formation en géomatique, j'ai déjà été initié au langage python au premier semestre de ma 1ere année de Master. Malgré le projet réalisé pendant cette période (médiatisation de données cartographiques sur une interface web), mon niveau était loin d'être suffisant ne serait-ce que pour comprendre le script. A l'aide de Thomas, j'ai pu comprendre le fonctionnement général du script, les mécanismes principaux. Puis en me documentant et en expérimentant le langage Python de mon côté, j'ai pu petit à petit comprendre le script en détail et à terme le modifier en y ajoutant mes améliorations. Le plus difficile à appréhender au début a été la manière dont le code a été construit.

En effet, je n'avais jamais été confronté à des scripts fonctionnels complexes en python au cours de mes études mais plus à des bouts de codes. Une autre difficulté non des moindres, fut la compréhension de la librairie Panda (se référer à la partie sigle et définitions). En effet, le script gère des données en entrées sous format CSV, donc un tableau. Pandas permet de manipuler ces données tabulaires et d'effectuer des transformations sur la donnée d'entrée.

Le script est composé d'un ensemble de fonctions qui vont permettre :

- de « spliter » le fichier d'entrée en multiples fichiers pour accroître les performances en terme

de temps de traitement (car les fichiers peuvent être imposants)

- de traiter la donnée simplement sur les champs concernés (Rue, Ville, etc...), encore pour
augmenter les performances

- de créer une « progress bar » pour visualiser l'avancement du traitement

Et enfin d'une fonction principale, qui va envoyer les multiples requêtes sur le serveur interrogé et en récupérer les réponses, pour les écrire dans un fichier de sortie à l'aide de Pandas.

B. Mes améliorations sur l'outil geoloc_csv

Après avoir compris le fonctionnement du script, j'ai donc décidé d'apporter quelques changements au script de base, des changements qui permettront d'ajouter des fonctionnalités où bien de simplifier les prés traitements imposés à l'utilisateur.

J'ai premièrement pensé à ajouter au script un module de pré traitement des données afin que le géocodage s'effectue dans les conditions optimales quel que soit la qualité des données en entrée. Voici le tableau qui résume la forme que doit avoir la donnée en entrée avant d'être envoyée au serveur Addok pour que le géocodage s'effectue avec précision :

21

Figure 3: Tableau résumant la forme que doivent avoir les données en entrée

Or peu de données sont fournies dans ce format en respectant les règles citées sur le tableau. Je me suis donc basé sur ces règles pour créer une fonction qui va permettre au lancement du script d'effectuer automatiquement un « blanchissement » des données afin qu'elles correspondent au format attendu. Voici la fonction que j'ai créée, se nommant corrector :

Figure 4: La fonction de correction des données en entrée

Avec cette fonction, les données envoyées au serveur possèdent le format requis, à supposer bien sûr que les champs soient respectés (c'est-à-dire ne pas avoir l'adresse complète dans un seul champ par exemple). Pour les abréviations, j'ai utilisé un dictionnaire qui possède en clé les abréviations officielles, et en valeurs leur nom complets, pour effectuer le remplacement au cas où il y aurait une abréviation.

Secondairement, j'ai ajouté quelques lignes au code pour pouvoir récupérer les adresses qui n'ont pas été géocodées dans un fichier CSV. J'ai rendu cette fonctionnalité optionnelle et donc c'est à l'utilisateur d'utiliser le paramètre « shp_out » que j'ai créé pour utiliser cette fonction et récupérer les adresses dans un fichier dont il aura spécifié le nom.

22

Enfin, j'ai créé une fonction qui va permettre à l'utilisateur, toujours à travers un paramètre lors de l'appel de la fonction, de créer directement une sortie sous format shapefile du fichier CSV des adresses géocodées. Pour cette fonction, j'ai utilisé les modules de Fiona, Shapely et Geopandas pour créer à partir des coordonnées les points qui correspondent et construire le shapefile.

C. Limites des améliorations et optimisations possibles

Bien que les améliorations apportées au script lui ajoutent une plus-value, je suis conscient qu'il existe des failles et qu'il demeure en l'état optimisable. Par exemple, la création de la fonction qui permet d'effectuer un pré traitement des données est utile, cependant elle ne permet pas non plus de formater automatiquement l'adresse dans les champs correspondant au cas où celle-ci n'est pas conforme.

Par ailleurs, la fonction de création du shapefile est efficace pour un échantillon d'adresses traitées qui ne dépasse pas les 10 000 adresses. Au-delà, le temps de traitement évolue exponentiellement et donc le traitement peut devenir beaucoup plus important. Hors avec FME, il est possible de vectorisé les points à partir de leurs coordonnées très rapidement même sur des fichiers de grande ampleur. Ma solution de vectorisation est donc adaptée et permet un gain de temps sur des fichiers d'adresses moyennement important (de 1 à 15000 adresses). Cela reste tout de même une option donc ce n'est pas fondamental pour le fonctionnement du script.

2.2 Le Snapping aux bâtiments

2.1 Définition et précision du besoin

A. Définition du Snapping

Nous pouvons traduire le terme « Snapping » par « Capture » en français. Le Snapping en terme SIG peut être considéré comme une opération où géotraitement qui va permettre d'affecter des informations d'un point A à un point B selon certains paramètres. Il existe une multitude de solutions de Snapping différentes, cependant la plus commune est celle du Snapping au voisin le plus proche. Voici un figuré pour comprendre les processus mis en jeu lors d'une opération de Snapping :

Figure 5: Snapping d'un point à un autre

23

Sur la figure 7, c'est une opération de type géométrique. En effet, le Snapping du point de fin de ligne à une autre peut permettre de résoudre certaines erreurs topologiques, notamment pour les réseaux. L'opération fonctionne de telle sorte que le point final sur la ligne candidate va se snappé sur le point final de la ligne cible le plus proche.

On peut également ne pas modifier les géométries mais se servir des méthodes de Snapping pour attribuer les informations d'un figuré géométrique à un autre, ce qui peut être très pratique dans de nombreux cas.

B. Précision du besoin

L'opération de géocodage permet de récupérer des points qui ont des coordonnées et un certain nombre d'informations. Dans le cadre de mon stage, j'ai travaillé avec le répertoire national SIRENE, qui recense l'ensemble des entreprises en activité sur le territoire. Comme dit précédemment, j'ai travaillé sur le data-set « Usage des bâtiments », donc à l'échelle du bâtiment. Concrètement, la nécessité est de rattacher l'information qui est associée à un point qui a été géocodé, au bâtiment qui lui correspond. Et c'est là qu'intervient donc le Snapping, ou plus précisément les différentes techniques de snapping des informations aux bâtiments. Lors de mon arrivée, la seule et unique manière de snappé les informations provenant du fichier SIRENE aux bâtiments pour compléter le data set usage des bâtiments est la technique dite du « Voisin le plus proche ». J'en ai déjà évoqué le principe (cf. figure 6), c'est-à-dire que dans le cas de ForCity, les informations étaient snappés au bâtiment le plus proche. Or dans de nombreuses situations, le snapping au voisin le plus proche n'est pas la solution la plus adaptée.

En effet, selon le secteur d'activité de l'entreprise où de l'établissement d'activités, il se peut que plusieurs bâtiments ne soient pas pris en compte par le snapping, c'est le cas lorsque l'entreprise est diffusée sur plusieurs bâtiments mitoyens, et non comprise dans un seul. Il faut donc considérer la nature du secteur d'activité, et étudier en détail la structure de la donnée en entré pour obtenir un maximum d'informations sur le ou l'ensemble de(s) bâtiment(s) à snappé(s). Il existe aussi d'autres problèmes liés à la donnée d'entré, par exemple pour le cas du Fichier SIRENE certains établissement administratifs ont leurs effectifs regroupés au niveau du siège principal, ce qui provoque une surpopulation salariale au niveau du siège et un désert au niveau des autres établissements (ex : les services de police, gendarmerie, mairie).

Le besoin et ma mission sont ici de faire en sorte d'améliorer les workflows visant à attribuer des usages aux bâtiments. Pour cela, il fallait tout d'abord que je comprenne le processus général de mise en place du data-set sur l'usage des bâtiments. C'est donc avec ma tutrice Emilie que j'ai tout d'abord plongé dans les workflows afin d'en comprendre le fonctionnement général (cf. l'introduction sur l'usage des bâtiments). Mon travail en ce qui concerne le snapping des informations sur le data-set usage des bâtiments concerne particulièrement les catégories d'usages « Commerce », « Industrie ». L'ordre dans lequel sont traités les différents secteurs d'activités est le suivant :

1. Secteur agricole

2. Transport

3. Enseignement

4. Santé

5. Administration et services publiques

6.

24

Industrie

7. Sports et Loisirs

8. Commerce

9. Bureau

Le fichier récupéré en sortie est alors traité par Spoc.

C. Zones de tests

Afin d'améliorer les processus de Snapping sur les workflows, Emilie m'a attribuer une zone de test adaptée aux deux secteurs d'activités. J'ai tout d'abord travaillé sur le 7em arrondissement de Lyon au niveau de Gerland, et sur les docks de Vaulx-en-Velin, ceci pour le secteur industriel.

Figure 6: Localisation de la zone de Gerland

J'ai travaillé sur la zone sud du quartier de Gerland car c'est un territoire qui abrite sur Lyon un bon nombre d'entreprises dont le secteur d'activité est l'industrie.

J'ai également travaillé sur la commune de Vaulx-en-Velin, là où se concentrent nombre d'activités industrielles et artisanales (cf. figure 8 dans l'annexe).

Pour les activés commerciales, nous avons choisis une zone comportant un grand centre commerciale au niveau de la porte des alpes (cf. figure 9 dans l'annexe).

Ainsi qu'une zone en plein centre-ville composée de divers commerces de proximité au niveau de la place Bellecour (cf. figure 10 dans l'annexe).

2.2 Méthodologie et processus de Snapping

A. Snapping des activités commerciales sur la zone de la porte des Alpes

Le premier secteur d'activité sur lequel j'ai travaillé est le commerce. Pour cela, nous avons choisis deux zones sur Lyon qui représentent des activités de commerce différentes (proximité et centre commerciaux, cf. la partie Zone d'étude). Je vais dans cette partie montrer un certain nombre de cartes qui sont le résultat d'un Snapping avec différents paramètres. Pour chacune, je préciserai les observations que j'ai pu avoir et les piste possibles qui en résultent pour améliorer les résultats de l'opération de Snapping. Ainsi, je détail la méthodologie mise en place pour arriver à mes résultats.

25

Figure 7: Snapping au bâtiment sans paramétrages

26

Observations:

- ? Il semble que le snapping au bâtiment fonctionne correctement sur les centres commerciaux et commerces possédant une grande surface.

- ? Cependant on remarque au Nord-Ouest que des logements ont été snappés, ceci dû à la présence de petits commerces.

Piste possible :

- Implémenter une contrainte d'exclusion des entrepreneurs individuels pour limiter le

snapping sur logement.

Après examen des champs de la donnée SIRENE en entrée, j'ai remarqué l'existence d'un champ nommé NATETAB. C'est la nature de l'activité exercée par l'entrepreneur individuel (artisanale, commerciale, libérale etc). De telle façon, j'ai pensé pouvoir filtrer tous les entrepreneurs individuels en partant du principe que ceux-ci exercent à leur domicile. Se référé à la figure 12 de l'annexe pour visualisé le résultat du snapping.

Observation:

- ? Moins de logements ont été snappés.

- ? Il reste néanmoins une importante part de logements qui sont snappés. Piste possible :

- Implémenter une contrainte d'exclusion par rapport à l'effectif des salariés.

La contrainte d'exclusion des entrepreneurs individuels ne suffisant pas à éviter le snapping sur certains logements, j'ai utilisé un autre champ de fichier SIRENE qui contient l'effectif salarial par tranche afin de limiter le snapping sur résidences.

27

Figure 8: Snapping au bâtiment avec contraintes sur entrepreneurs individuels et effectifs

Observation:

- ? La contrainte sur l'effectif couplée à celle sur le champ natetab permet de ne pas snapper les bâtiments de logement qui possède des petits commerces du type commerce de proximité

- ? Le snapping engendre parfois ce genre de problèmes :

Figure 9: Problème lorsque le point SIRENE est mal placé

Le bâtiment snappé correspond à un logement, tandis que la zone (défini par le cercle bleu sur l'image)
qui correspond au point SIRENE est un centre commercial inclus dans le bâtiment de logements. Il

semble donc, en ce qui concerne les grands centres commerciaux, que le snapping au bâtiment soit la méthode la plus adaptée.

B. Snapping des activités commerciales sur la zone du centre-ville de Lyon

Sur la zone du centre-ville de Lyon, nous sommes en présence de nombreux logements et commerce de proximités, ce qui est différent de la zone de commerce de la porte des Alpes qui regroupe principalement des grands centres commerciaux. Se référé à la figure 15 de l'annexe pour observer le résultat du snapping au bâtiment au niveau de la place Bellecour.

Observation :

- ? Sur la zone du centre-ville, il semble que le paramétrage de contrainte sur l'effectif et sur

le champ NATETAB n'est pas suffisant, beaucoup de bâtiments de logement sont snappés.

Piste possible :

- Séparation des commerces de grande surface et des commerces de proximité pour les traiter différemment dans la chaîne du workflow.

28

Figure 10: Snapping au bâtiment sur la zone du centre-ville

29

Observation :

- ? Sur la zone du centre-ville où le bâti est dense et les activités multiples, le snapping en

différenciant les deux catégories de commerces pose problème car les deux catégories sont présentes dans des bâtiments qui comportent des logements.

- ? Etant donné la présence de la catégorie d'usage « Bâtiments à grande surface commerciale », il semble difficile d'effectuer une catégorisation pré-snapping.

Piste possible :

- Snapping au bâtiment pour tous les commerces, et recoupage avec la surface activité de la BD TOPO pour savoir si le bâti peut ou non, recevoir de l'habitat.

Pour conclure sur l'activité commerciale, l'existence des commerces de proximités et boutiques rend le snapping difficile étant donné qu'il ne faut pas snapper d'activité sur des bâtiments résidentiels. La méthode de snapping au bâtiment fonctionne bien sur les grands centres commerciaux mais moins lorsqu'il y a présence de commerce de proximité.

Une des pistes envisagées est d'utiliser les zones d'activité spécifiée par la BD TOPO en tant que filtre. Ainsi, tout bâtiment snappé dans la zone peut être candidat au snapping.

C. Snapping des activités industrielles sur Vaulx-en-Velin

Pour les activités industrielles, j'ai repris la même méthodologie que précédemment pour le commerce, en partant de la méthode de snapping actuelle (utilisée) et en tentant d'en améliorer le résultat au fur et à mesure. Je montrerais les résultats obtenus sur la zone de Vaulx-en-Velin, ceux obtenus sur la zone du Gerland sont disponibles en annexes.

Je vais dans cette partie décrire les grandes étapes de mon raisonnement et les résultats obtenus. Je laisserai volontairement les cartes dans cette partie et non en annexes, pour la raison qu'elles permettent de bien comprendre les étapes du raisonnement, et ainsi la méthodologie employée. Pour commencer, je suis donc parti sur le méthode de snapping simple au bâtiment le plus proche qui était la méthode employée.

30

Figure 11: Snapping au bâtiment le plus proche sur Vaulx-en-Velin

Observations:

-? Des bâtiments qui correspondent à des logements ont été snappé, notamment à l'Ouest au niveau de l'école.

- ? Des bâtiments avec peu de surface ont été snappé.

- ? Snapping de surface triangulaire due à la BD TOPO (la géométrie des bâtiments sur la BD TOPO).

Par la suite, j'ai décidé d'inclure une contrainte sur la surface des bâtiments pris en compte pour le snapping. Ceci afin d'éviter de snappé des bâtiments résidentiels avec peu de surface.

31

Figure 12: Snapping aux bâtiments avec exclusion de surface sur Vaulx-en-Velin

Observations:

- ? Il semble que la contrainte d'exclusion de surface permet d'éviter de snapper des bâtiments qui ne peuvent être des bâtiments industriels.

- ? Cependant, on remarque que des bâtiments non industriels continuent d'être snappés, c'est toujours le cas de l'école.

N.B : Les carrés verts représentent les zones où il y a eu modification.

La prochaine étape consiste en l'exclusion des entrepreneurs individuels exerçant à domicile via le champ NATETAB, comme je l'avais fait précédemment pour les activités commerciales.

32

Figure 13: Snapping aux bâtiments avec contrainte sur entrepreneurs individuels et surface sur Vaulx-en-Velin

Observations :

- ? Semble le plus adapté au snapping sur le bâti industriel.

- ? Exclue les activités avec des entrepreneurs individuels au statut d'artisan.

- ? Tous les bâtiments industriels ne sont pas snappés.

Le résultat est plus satisfaisant que sans la contrainte sur les entrepreneurs individuels. Cependant, certains bâtiments ont été snappés deux fois pour deux points différents. De plus, certaines entreprises sont contenues dans plus d'un bâtiment, pour celles-ci cette méthode de snapping ne fonctionne pas. J'ai donc changé l'échelle de snapping pour qu'elle corresponde à la parcelle et non au bâtiment, ceci afin de récupérer les informations sur l'ensemble des bâtiments de l'entreprise.

33

Figure 14: Snapping à la parcelle sans paramétrage sur Vaulx-en-Velin

Observations :

- ? Il semble que des bâtiments industriels sont oubliés lorsque snappés à la parcelle.

- ? Des logements ne sont plus snappés.

J'inclus alors une contrainte sur les entrepreneurs individuels, avec une méthode de snapping à la parcelle.

34

Observations :

Si l'on compare les méthodes de snapping sur parcelles et sur bâtiments avec le paramètre d'exclusion NATAB sur les artisans, on peut observer :

- Le snapping sur parcelles inclus plus d'entité que celui sur bâtiments (avec les mêmes

paramètres d'exclusion).

- Cependant, le snapping sur bâtiments inclut certains bâtis industriels que celui sur parcelle
n'incluait pas.

Avec ces observations, ma réflexion fut la suivante. Il semble que chacune des deux méthodes de snapping possède des avantages et des inconvénients. Le snapping au bâtiment est moins complet que celui à la parcelle cependant il inclut certain bâtiments non pris en compte par ce dernier. Le snapping à la parcelle semble plus précis que celui au bâtiment mais n'inclus pas certaines entreprises. J'ai donc pensé à combiner les deux méthodes de snapping pour obtenir un meilleur résultat.

35

Figure 15: Snapping aux parcelles puis bâtiments sur Vaulx-en-Velin

Observations :

- Ce processus de snapping fonctionne de la maniére suivante :

1) Snapping au niveau de la parcelle.

2) Snapping au bâtiment le plus proche avec contrainte de surface

3) Ajout d'une condition « SI » :

- Si le bâtiment snappé se trouve dans la parcelle, alors on snap tous les bâtiments au niveau de cette parcelle.

- Si le bâtiment snappé se trouve en dehors de la parcelle, alors on snap au bâtiment le plus proche sans garder ceux présents dans la parcelle.

- ? Cette méthode combine les bénéfices du snapping au niveau du bâtiment ainsi que ceux au niveau de la parcelle.

- ? Cette méthode permet de snapper le bon bâtiment même si le point SIRENE n'est pas dans la bonne parcelle.

- ? Il reste cependant un problème, si le bâtiment industriel à snappé est trop petit, cette méthode trouvera un bâtiment plus important en surface (possibilité que ce soit un logement...)

36

On pourrait alors changer le seuil d'exclusion des bâtis industriels, cependant le gain en précision serait probablement plus faible que la perte en terme de bâtiments non snappés.

2.3 Conclusion sur le Snapping

Les changements consécutifs que j'ai opéré sur les modules des workflows concernant l'industrie et le commerce, suivant la méthodologie définie dans la partie précédente, a permis d'affiné les résultats que l'on obtenait précédemment (obtenus avec le snapping simple au bâtiment). Dorénavant, l'attribution de l'information au bâtiment prend en compte l'échelle du bâtiment, mais aussi la zone d'activité (en ce qui concerne le commerce) ainsi que la parcelle (échelle administrative). Ces prises en compte des différentes échelles selon un cheminement de conditions de type « SI-SINON » permet d'obtenir un snapping « intelligent » des informations au bâtiment. Ce qui se traduit par la diminution du nombre de bâtiments résidentiels snappés, et cela permet aussi de snappé des ensembles de bâtiments qui correspondent à un seul point SIRENE (au lieu de ne snappé qu'un seul bâtiment). J'ai dû expérimenter plusieurs méthodes et en observer les résultats sur cartes pour suivre des pistes d'améliorations et obtenir un résultat plus précis que celui obtenu initialement.

Comme je l'ai précisé, j'ai principalement travaillé sur les modules industrie et commerce du workflow building_usage. Il faut savoir que chaque module du workflow implique une réflexion en amont quant au snapping de l'information au bâtiment. Par exemple, les bâtiments de santé publique occupent des surfaces importantes et les activités sont réparties au sein de nombreux bâtiments. Ce qui nécessite de réfléchir en amont aux surfaces que l'on va snappé ; bâtiment, parcelle, zone d'activité ... ? D'autres difficultés peuvent provenir de la source de donnée en entrée, comme par exemple le fait que l'effectif salariale pour les administrations soit regroupé au niveau du siège social. Il faut donc pouvoir jouer avec ces différentes échelles et les inexactitudes inhérentes aux données en entrée afin d'obtenir un résultat raisonnablement correct, c'est-à-dire correspondant au besoin de l'entreprise. En effet, les workflows construisant le data-set usage des bâtiments ne vise pas la perfection comme ma tutrice me l'a précisé en me le présentant (hors de portée via les processus usités actuellement), mais vise plutôt à consolider les données sur les usages au niveau du bâtiment afin qu'il soit correctement utilisés à l'étape prochaine par les modèles tels que SPOC.

Après consolidation des workflows sur l'usage, nous nous retrouvons avec une table renseignant de nombreuses informations sur les bâtiments, dont la surface de plancher et la surface d'usage par catégories d'activités. Des problèmes surviennent alors, en cause les techniques de snapping, les données en entrée et l'interprétation par le modèle SPOC. Un des problèmes sur lequel j'ai dû m'attarder étant celui-ci : une surface de plancher du bâtiment inférieure à l'ensemble des surfaces des usages qui le constitue. Pour pallier à ce problème, il y a nécessité de ventiler la surface en trop plein.

37

3 La ventilation

3.1 La ventilation de la surface salariale aux bâtiments

1.1 Les conditions initiales

A. Résultat du workflow et limites

En sortie du workflow, plusieurs incohérences sont détectées. Les limites se trouvent à différents niveaux :

? Dans les données en entrée :

La principale donnée utilisée pour définir les usages des bâtiments, et surtout les effectifs et les surfaces utilisées pour ces usages, est le fichier SIRENE. Le calcul des surfaces pour chaque activité repose sur les données d'effectifs renseignées dans le fichier SIRENE. Or ces données sont déclarées à la création de l'entreprise et ne sont pas toujours remise à jour, elles sont donc peu précises.

D'autre part, certains sites d'une entreprise peuvent regrouper les effectifs de plusieurs établissements situés sur d'autres sites. On peut donc trouver des effectifs disproportionnés attachés à certains établissements. C'est le cas de certaines administrations publiques, certains équipements de type scolaire notamment. L'étude rapide de la relations entre les établissements présentant le même numéro SIRET n'a pas permis de mettre en lumière ces cas de figures. Elles nécessitent une étude plus approfondie.

? Dans les postulats de calcul :

Le calcul des surfaces salariales à partir des moyennes sur le fichier SIRENE engendre une fourchette d'incertitude en plus, ainsi que celui des surface de planchers par bâtiments.

? Dans les traitements :

C'est la partie sur laquelle j'ai travaillé, c'est-à-dire les limites induites par le Snapping. En sortie du workflow sur l'usage des bâtiments, qui traite l'ensemble des activités à des échelles de précision différentes (plusieurs niveaux de précision allant de n1 le moins précis à n4 le plus précis), nous obtenons une table avec l'ensemble des bâtiments de la zone étudiée selon une classification propre à ForCity. Ces bâtiments ont un certains nombres d'informations renseignées, parmi celles-ci, la surface salariale octroyée par activités pour chaque bâtiments, ainsi que la surface totale du bâtiment. Par exemple, un bâtiment peut posséder une surface totale de 250m2 avec pour usage numéro 1 une activité de type commerciale qui occupe 150m2 de surface, et une activité de type bureau qui occupe 50m2 de surface. Il reste donc 50m2 de surface libre, lorsque l'on envoie ces données à SPOC, celui-ci déterminerait en théorie qu'il pourrait y avoir potentiellement dans ce bâtiment 50m2 de surface résidentielle. Hors les traitements peuvent induire des erreurs de type surface d'usage totale plus élevée que la surface du bâtiment pour certains bâtiments. Pour pallier à ce problème, une solution est adoptée au coeur de l'entreprise, nommée ventilation. Cependant, à l'heure actuelle, aucune solution de ventilation n'a été mise en place en ce qui concerne l'usage des bâtiments. Ce qui fausse

38

les résultats obtenus post SPOC. Ma mission était donc de créer une solution permettant de ventiler ces surfaces salariale en surplus.

B. La ventilation

Le principe de la ventilation est plutôt simple, il consiste à ventiler la surface d'usage en trop plein aux bâtiments adjacents qui ont de la surface libre. Ce processus permet d'éviter l'obtention de bâtiments en surplus de surface d'usages, et ainsi d'éviter par la même occasion les erreurs retournées par SPOC. Ces erreurs concernent la répartition des ménages sur les bâtiments possédant une surface libre.

Evidemment, on peut d'ores et déjà émettre une critique quant à la pertinence du processus de ventilation. En effet, comme je l'ai dit précédemment ce processus va permettre de ventiler la surface en surplus aux bâtiments adjacents qui possèdent de la surface libre. Par conséquent, on se retrouve alors avec des résultats qui peuvent être faussés par la ventilation. Si l'on prend par exemple un bâtiment possédant 200m2 de surface totale, et 300m2 de surface d'usage. Après l'opération, 100m2 de surface vont être ventilés sur les bâtiments adjacents qui ont de la surface libre. Donc en théorie, certains bâtiments vont se retrouver avec une surface salariale qu'ils ne devraient pas avoir. J'expliquerai dans la partie suivante tous les mécanismes qui doivent être mis en jeu pour effectuer l'opération de ventilation en limitant au maximum le remplissage de bâti non concernés.

J'ai eu avant de me lancer sur cette tâche une discussion avec Emilie, qui m'a informé que la ventilation est un procédé utilisé au sein de l'entreprise comme solution « par défaut », c'est-à-dire qu'elle induit irrémédiablement un certain taux d'erreurs. Cependant, ces erreurs ont une incidence négative moins importante que les erreurs post SPOC retournées sans utilisation de ce procédé. C'est donc une question de limitation et contournement du problème plus qu'une résolution du problème en elle-même. Cette méthode intervient dans la volonté de consolidation du data-set Building_Use.

1.2 Méthodologie et étapes de développement

A. Les contraintes à respecter

Après l'affinage des techniques de snapping, il me fallait donc trouver un moyen de ventiler les surfaces salariale en surplus des bâtiments afin d'envoyer à SPOC des données conformes. Il faut savoir qu'au cours de mes avancées, il y a eu quelques complications et autres changements de directions qui ont changé les buts premiers de ma mission. J'expliquerai au mieux le cheminement de ma réflexion propre ainsi que les attentes de ma tutrice au cours de la période sur laquelle j'ai travaillé sur cette mission.

Comme je l'ai dit précédemment, le but de la solution était de ventiler les surfaces d'usages en surplus. Pour cela, je devais respecter un certains nombres d'indications et de contraintes :

39

? La jointure entre les tables

Je devais au préalable effectuer une jointure entre la table comportant un certain nombre d'informations par bâtiment mais surtout les surfaces d'usage par bâtiment et leur surface de plancher, avec le shapefile comprenant la base bâti. Ces tables étant des paramètres variables, c'est donc une première contrainte en ce qui concerne le choix technologique de la solution. Au final, j'obtiens une table avec chaque usage par bâtiment. La majorité des bâtiments ne possèdent qu'un usage, cependant certains possèdent plusieurs usages, ce qui fait que la table ne contient pas d'identifiant de bâtiment unique.

? Le facteur distance

Après réflexion et réunion avec ma tutrice, nous nous somme dis qu'il serait judicieux voir indispensable d'implémenter à la solution un paramètre de distance. C'est-à-dire que la ventilation opérerait successivement du bâtiment le plus proche à celui qu'il faut ventiler, au plus lointain. Ce qui évitera de ventiler des surfaces d'usages sur des bâtiments qui ne serait pas voisins.

? La ventilation seulement sur les bâtiments candidats

Il ne faut ventiler la surface salariale en surplus que sur les bâtiments possédant de la surface libre et non sur les autres.

? Le temps de traitement

Il faut savoir que l'on travaille sur des zones de grande surfaces (ex : la métropole de lyon, les départements de l'île de France, une commune..), ce qui peut porter le nombre d'entités à analysés à plusieurs milliers. Hors, la solution devant intervenir entre la fin du workflow sur les usages et la passe des données à SPOC, on ne peut se permettre des temps de traitements trop long.

? Un script Python

Il m'a été donné comme consigne de développer une solution en python, en raison des multiples possibilités offertes par ce langage, du caractère polymorphique qu'il propose, mais aussi de la disponibilité de l'aide que l'on pourrait m'apporter si je développais la solution avec ce langage.

B. Technologies et librairies employées

A ce stade, il me fallait choisir une technologie où un environnement de développement. J'ai alors eu une réunion pré développement avec Amaury, un géomaticien développeur s'occupant entre autre du déploiement des indicateurs dans les plateformes ForCity. Ceci afin de choisir l'environnement de développement le plus adapté vis-à-vis du but de la mission et des contraintes, mais aussi d'établir une stratégie de développement à l'aide d'un diagramme Yed, disponible via un lien annexe. Amaury m'a alors suggérer de développer le script sur un environnement QGIS. Pour raison principale, le fait que QGIS offre via son application pyQGIS de nombreux outils qui permettent d'effectuer des traitements géographiques sur les couches importées directement sur l'interface QGIS. Cela permet de satisfaire la contrainte sur la distance, et d'effectuer divers géotraitements sur les données en entrée si le besoin apparaît. Qgis offre de nombreuses possibilités via pyQGIS pour traiter la donnée géographique. En effet, l'interface graphique du logiciel est limitée dans son utilisation à un certains nombres de possibilités. L'interface de développement sous la console QGIS permet à son utilisateur de créer une chaine de traitements/géotraitements sur la donnée importée selon ses besoins, et offre donc plus de

40

liberté, ceci à condition de pouvoir prendre en main l'outil de développement, ce qui n'est pas forcément aisé... En effet, le développement sous pyQGIS est une tâche laborieuse, principalement en raison du manque de documentation sur les fonctions qui y sont disponibles. Cependant, Amaury m'a dirigé vers cette solution car il était en capacité de m'aider, ayant déjà développé sur cet environnement. J'ai également utilisé une extension de QGIS nommée Script Runner qui permet d'exécuter un script externe sur l'appli QGIS, ce qui octroie un confort non négligeable pour le scripting étant donné le caractère quelque peu trivial de la console python de QGIS.

Pour une raison que je détaillerai dans la partie suivante qui correspond aux étapes et à la méthodologie, j'ai dû utiliser d'autres outils et sortir de l'environnement QGIS. En le faisant, j'ai dû utiliser des librairies qui permettent le traitement spatial de données sous python. Je me suis dirigé vers la librairie Geopandas, une extension de la librairie pandas qui permet de travailler sur des données géographiques. Cette solution m'a paru la plus adaptée étant donné que j'avais eu l'occasion lors de l'amélioration du script de géocodage de m'entraîner sur la libraire Panda, parente de Geopandas. Cette librairie fonctionne de la même manière que Pandas à la différence que l'on manie des géodataframes à la place de dataframes, et donc permet les traitements géographiques. J'ai également utilisé un outil nommé psycopg2, celui-ci permet de faire la liaison entre une base de données PgSQL et un script python. On se connecte à la base de donnée via le script et on peut alors récupérer les tables qui nous intéressent, les transformer en géodataframes où dataframes pour lancer la série de traitements souhaités.

C. Méthodologie et étapes de développement

Dans cette partie, je vais définir les étapes de développement de mon script final que j'ai développé hors de l'environnement QGIS. Lors de mon premier essai sous QGIS, j'ai finalement réussi à atteindre le résultat escompté, cependant le temps de traitement était beaucoup trop important (de l'ordre de 44h pour traiter 250 000 entités). Je vais donc détailler les étapes de mon script python développé avec les librairies pandas et geopandas. Je dois cependant insister sur le fait que mon premier script sous pyqgis m'a permis de consolidé mon raisonnement et de me familiariser avec les outils de géotraitements sous python, ce qui a largement facilité mon 2em essai en « sortant » le script de l'environnement QGIS (se reporter au diagramme disponible en annexe pour visualisé le fonctionnement général du script pour une meilleur compréhension). Voici les étapes principales :

1. Jointure des deux couches J'ai utilisé l'outil psycopg2 et geopandas.

2. Création du champ « free_surf »

A cette étape, je créer un champ contenant la surface disponible sur chaque bâtiment. Obtenu par la différence entre la surface totale du bâtiment et la surface salariale totale sur ce bâtiment. Les valeurs contenues peuvent donc être négatives. Ce qui permet de filtrer les bâtiments par cette valeur et d'obtenir une liste de bâtiments dont les surfaces d'usages en surplus sont à ventilé.

3. Création de la boucle principale

Création de la boucle qui va permettre de parcourir la liste de bâtiments à ventilé.

4. 41

Création d'un buffer autour du bâtiment analysé

Je créer alors un buffer autour du bâtiment analysé, de l'ordre de 400m. Ceci permet d'obtenir une liste de bâtiments autour du bâtiment analysé, afin d'éviter de calculer ensuite les distances sur l'ensemble des 250 000 entités. C'est une question de gain de temps de traitement.

5. Création de la liste de bâtiments contenus dans le buffer

Consiste en une opération d'intersection via des opérateurs de géopandas pour récupérer une liste de bâtiments contenus dans le buffer, en excluant le bâtiment analysé dans la grande boucle.

6. Calcul des distances

Calcul des distances entre le bâtiment analysé et chaque bâtiment contenu dans le buffer, création d'une liste contenant l'ensemble de ces bâtiments avec leur distance respective au bâtiment analysé et le champ free_surf.

7. Création d'une fonction de ventilation

Une fonction qui va permettre de ventiler la surface du bâtiment analysé sur les bâtiments adjacents en partant du plus proche au plus lointain jusqu'à ce qu'il ne reste plus de surface à ventilé. Techniquement, ce fut l'étape la plus compliquée à mettre en oeuvre.

1.3 Retour d'expérience

A. Difficultés rencontrés et résultat

Lors de ces diverses étapes, j'ai rencontré de nombreuses difficultés de toute sorte. Je vais simplement résumer dans cette partie les principales, et les solutions que j'ai apportées. Une des première grande difficultés à surmonté fut le temps de traitements sur ma première version du script sur l'environnement QGIS. Après discussion avec certains développeurs de l'entreprise, j'ai pris la décision de réadapter le script dans une version plus générique, pour gagner en performance et en versatilité. La réadaptation fut relativement aisé (vraiment relativement...), cependant j'ai eu du mal à transformer la fonction de ventilation de la première version de mon script à la version finale. L'adaptation n'était pas intuitive étant donné que les outils de pyQGIS n'étaient pas superposables, je m'efforçai à traduire ma fonction d'un script à l'autre alors qu'il fallait simplement repenser la fonction pour l'adapter aux nouvelles librairies. Au final, la fonction était plus simple et compréhensible, mais aussi plus efficace en terme de performance. J'ai réussi à atteindre un temps de traitements de 2h pour le même nombre d'entités (au lieu de 44 heures), ce qui est beaucoup mieux mais toujours insuffisant. Pour atteindre un temps raisonnable, j'ai finalement eu recours à la création d'index spatial sur la couche de bâtiments au préalable (avant le passage dans la boucle), ainsi le calcul des distances entre ceux-ci est beaucoup plus rapide étant donné que le script ne prend pas en compte la géométrie pour le calcul mais l'index du bâtiment. Il faut savoir qu'avec une telle méthode, le calcul des distances est approximatif, dans le sens où l'index spatial va créer une bounding box autour du bâtiment. Cependant, je n'avais aucunement besoin d'un grand degré de précision dans le calcul des distances donc ce fut un choix pertinent.

42

Au cours du développement de ma solution, j'ai dû faire face à quelques difficultés. Cependant, j'ai au final aboutit à un résultat, se matérialisant par un script en python utilisant un certain nombre de librairies. J'ai testé la solution sur un échantillon de la couche bâti du département 93, puis sur l'ensemble du département. Le script est fonctionnel et permet la ventilation de la surface salariale en trop plein sur les bâtiments adjacents. J'ai réussi grâce à cette solution à atteindre un temps de traitements de 30 minutes, écriture des nouvelles valeurs de surfaces dans la table comprise dans le temps (en effet, après toutes ces étapes, il faut écrire les nouvelles valeurs dans la couche, ce qui allonge le temps de traitement).

B. Limites et pistes d'améliorations possibles

Bien que je sois arrivé au résultat final escompté, il existe quelques limites à ma solution qui reste en soit quelque peu triviale. En effet, mon script permet de ventiler la surface salariale en surplus des bâtiments, cela en utilisant le champ free_surf que j'ai créé au préalable (cf. partie C). Cependant, lorsque la surface salariale est ventilée aux bâtiments adjacents qui ont de la surface totale libre, mon script ne prend pas en compte la surface d'usage attribuée par type d'activité. C'est-à-dire que la surface qui va être ventilée correspond à un usage spécifique, hors l'information n'apparait pas sur le bâtiment qui aura reçu cette surface. En pratique, il m'aurait fallu ajouter une fonction à mon script qui permette pour chaque usage qui est ventilé sur un bâtiment de créer un nouvel usage sur ce bâtiment comprenant la surface ainsi ventilée, et donc d'ajouter une entité à la table finale, ce qui aurait complexifié ma tâche sur l'aspect technique. La raison pour laquelle je ne suis pas allé jusqu'à ce niveau de détail technique est purement logistique.

En effet, peu avant que j'aboutisse à mon script final, j'ai eu une réunion avec ma tutrice Emilie ainsi que Amaury pour discuter du script de ventilation. Après discussion, nous en sommes arrivés à la conclusion qu'il n'était pas forcément utile de développer le script outre mesure, et y inclure la prise en compte des usages pourrait être le sujet d'une prochaine amélioration. Cependant, en l'état actuel des choses, il n'était pas pertinent selon Emilie de retravailler le script afin qu'il intègre toutes les contraintes induites par le workflow générale. Celui-ci était encore en phase de pleine transformation, et donc susceptible de changer. D'autant plus que l'on ne savait à cette heure encore où intégrer mon script, ni comment. Où, dans le sens suivant : à quel moment du workflows faire tourner mon script ? Une option était de l'intégrer entre chaque module du workflow sur les usages (industrie, transport, etc...) plutôt qu'à la fin du workflow général. Ainsi, nous éviterions de mélanger tous les usages cependant le temps de traitement serait plus conséquent. D'autre part, comme je l'ai précisé en partie d'introduction au data-set sur l'usage des bâtiments, le workflow building_use est construit sur FME. Ce qui implique qu'il faudrait intégrer également mon script à FME afin qu'il puisse être exécuté dans le workflow. Hors intégrer un script python utilisant des librairies externes au sein de FME ne semble pas tâche aisée. Il existe cependant des pistes qui peuvent être suivies, comme l'utilisation du transformer « python caller » sur FME ou l'utilisation des environnements de travail, qui permettent d'exécuter à la chaine des modules différents, et possiblement des modules externe à FME. Je n'ai cependant pas creusé plus en profondeur la question, car j'ai été dépêché sur une autre mission plus urgente pour les besoins de l'entreprise.

Pour finir, il me semble avoir atteint un temps de traitement convenable à l'aide la création de l'index spatial. Cependant il est possible que celui-ci puisse être encore réduit légèrement en revoyant la structure de mon code, et particulièrement la fonction qui permet la ventilation qui pourrait probablement être plus optimisée.

43

4 Conclusion

Pour une entreprise qui vise à modélisé la ville de demain, il est nécessaire de prendre en compte de multiples paramètres. En l'occurrence, ces paramètres se matérialisent principalement par la donnée numérique géographique. La donnée brut peut être récupérée de différentes manières, mais nécessite obligatoirement un traitement afin de pouvoir être utilisée. La totalité de mon stage a été dédié au traitement de la donnée, un domaine vaste que l'on peut subdiviser en de multiples catégories, dont certaines ont été l'objet de ma mission.

J'ai travaillé particulièrement sur le géocodage des données provenant de sources telles que le répertoire SIRENE ou encore le RES (Répertoire des Equipements Sportifs), ainsi que sur les différents procédés menant à un snapping intelligents de ces points aux bâtiments. La solution développée par Thomas sur laquelle j'ai apporté mes améliorations permettra à ses utilisateurs (celle-ci est principalement destinée aux membres de l'équipe Geodata) de pouvoir géocodé des adresses en masse plus aisément et d'une façon plus coordonnée au sein de l'équipe. En effet, les besoins en terme de géocodage de l'entreprise sont ponctuels mais néanmoins réguliers, et une solution unique au sein de l'équipe permet d'évité certains problèmes. En ce qui concerne le snapping, nous avons pu améliorer les workflows initiaux sur lesquels j'ai travaillé via une méthodologie qu'il faut adapter à chaque secteur d'activité.

Le script de ventilation que j'ai conçu reste pour le moment au stade de « prototype », car il n'a pas été instancié dans le workflow final sur les usages des bâtiments. Ceci notamment dû au fait que l'ensemble des workflows sont en chantier dû aux nouveaux projets à la charge de ForCity, ainsi qu'à la difficulté d'intégration d'un script externe sous FME. Cependant, celui-ci pose les bases immuables du concept de la ventilation adapté aux besoins de l'entreprise, et pourra donc à terme être amélioré et incorporé au workflow.

Pour conclure, mes différentes réalisations au sein de l'entreprise ont été source de défis intellectuels, particulièrement celles qui concernent le développement informatique. J'ai dû avoir recours à la réflexion, la recherche et parfois une certaine dose d'ingéniosité pour arriver à mes fins et ainsi satisfaire les besoins des missions sur lesquelles j'ai été affecté. A travers cette expérience, j'ai pu découvrir le monde professionnel de l'intérieur, et cela en tant que géomaticien. J'ai également augmenté mes compétences en logiciels SIG (notamment FME que je ne connaissais pas) et en gestion de base de données. Néanmoins, ce sont surtout mes compétences en développement qui ont été largement accrues lors de mon expérience, et qui je l'espère me permettront de commencé ma carrière professionnelle en tant que géomaticien au profil développeur.

44

Annexes

Distribution des adresses par degré de précision

0% à 20% 20% à 40% 40% à 60% 60% à 80% 80% à 90% 90% à 100%

Figure 16: Diagramme de précision pour le plugin QBAN(O)

Figure 17: Visuel de la précision obtenue avec le plugin QBAN(O)

45

Figure 18: Localisation de la zone étudiée sur Vaulx-en-Velin

Lien 1: Diagramme du script de ventilation de la surface http://www.cjoint.com/c/GHCnXD5HLbe ->> à ouvrir avec le logiciel Yed.

46

Figure 19: Zone commerciale de la porte des Alpes

Figure 20: Zone commerciale aux alentours de Bellecour

47

Figure 21: Snapping aux bâtiments avec contrainte d'exclusion des entrepreneurs individuels

Figure 22: Snapping au bâtiment avec contrainte d'effectifs sur la zone du centre-ville de Lyon

48

Rapport sur la solution DOGEO

Voici les fonctionnalités de cette API :

· Importer des données à partir d'un CSV

· Importer des données par copier/coller

· Effectuer le géocodage uniquement si les scores sont inférieurs à un score

· Géocoder avec Google

· Géocoder avec Bing

· Géocoder avec IGN/Géoportail

· Géocoder avec OSM/Mapquest

· Géocoder avec la Ban

· Possibilités de modifier les composants de l'adresse directement dans la table en double cliquant dessus.

· Il est possible de forcer le géocodage d'une ligne en cliquant sur l'un des 4 icônes en bout de ligne.

· Pour chaque groupe de score une couleur au marker est attribuée

· Déplacer le marker manuellement en le faisant glisser sur la carte (le score passe alors à 100)

· Trier les résultats en cliquant sur l'entête d'une colonne

· Centrer la carte sur la ligne sélectionnée

· Lors d'un clic sur un marqueur, mise en surbrillance de la ligne correspondante

· Exporter les résultats en CSV, KML et GeoJSON

Pour chaque résultat, un score représentant la précision et de la qualité du géocodage est attribué

· 3x => commune

· 6x => rue

· 9x => adresse (rue + numéro)

Le « x » étant la façon dont a été attribuée l'adresse (extrapolation, relevé terrain, etc...) Ce score permet de comparer les résultats entre les différents services et de ne garder que le

plus élevé.
Ainsi en utilisant plusieurs services à la suite, il est possible d'optimiser la qualité de ces résultats.

Seuls les résultats ayant un score inférieur à la valeur donnée dans le champ prévu à cet effet sont géocodés. Par défaut la valeur est à 93 ce qui correspond à une localisation à l'adresse (numéro extrapolé).

De plus, il est possible de géocoder une même table d'adresses avec différents webservices. Le principe est donc d'affiner la précision du géocodage en relançant le géocodage avec un

service différent.
J'ai testé cet API avec un échantillon de 200 adresses (en effet, le navigateur a crashé lorsque j'ai essayé avec un échantillon de 2000 adresses), en utilisant les différents services pour pouvoir les comparer.

49

Avec le service qui utilise les données de la BAN, on obtient : -Temps de traitement : 18 secondes

-Précision du géocodage :

Rue+Numéro Rue Commune Non attribué

Distribution des adresses
selon le degré de
précision

Nombre
d'Adresses

 

Précision Pourcentage

184

Rue+Numéro 92%

12

Rue 6,5%

2

Commune 1,5%

2

Non attribué 1,5%

Avec le service qui utilise les données Google, on obtient : -Temps de traitement : 11 secondes

-Précision du géocodage :

Rue+Numéro Rue Commune Non attribué

Disctribution des adresses par degré de précision

Nombre d'Adresses

Précision

Pourcentage

194

Rue+Numéro

97%

0

Rue

0

4

Commune

2%

2

Non attribué

1%

Avec le service qui utilise les données IGN, on obtient : -Temps de traitement : 36 secondes

-Précision du géocodage :

Rue+Numéro Rue Commune Non attribué

Disctribution des adresses par degré de précision

50

Nombre d'Adresses

Précision

Pourcentage

184

Rue+Numéro

92%

13

Rue

6,5%

0

Commune

0

3

Non attribué

1,5%

L'API de géocodage n'a pas fonctionné en utilisant les services BING et OSMMapQuest. Enfin, j'ai combiné les 2 services qui semblent les plus performants, à savoir Google et BAN pour affiner la précision, toujours sur le même échantillon. J'ai obtenu les résultats suivants :

-Temps de traitement : 31 secondes.

-Précision du géocodage :

Rue+Numéro Rue Commune Non attribué

Disctribution des adresses par degré de précision

Nombre d'Adresses

Précision Pourcentage

198

Rue+Numéro 99%

2

Rue 1%

0

Commune 0

0

Non attribué 0

51

On observe effectivement une amélioration de la précision dans les résultats en combinant 2 méthodes différentes.

Il semble cependant que l'API peut provoquer un dysfonctionnement du navigateur si on lui fournit un fichier d'adresses plus fourni (par exemple 2000 lignes).

52

Master Géomatique Montpellier 2016-2017

Le travail présenté dans ce mémoire concerne la mise en place de solutions pour consolider les chaînes de traitements visant à affecté l'information géographiques aux bâtiments. Ceci consiste en une étape à la création de modèles qui vont alimenter des maquettes numériques représentant des projets urbains. Ces maquettes vont être contenues dans un outil web qui va permettre aux acteurs du territoire d'effectuer des actions grâce des scénarios modulables sur une plateforme 3D interactive représentant le secteur étudié et de voir leurs impacts via des indicateurs. Toute la réflexion se situe au niveau de la phase de traitement, consolidation et affectation des données collectées qui vont constituer un data-set particulier dans ce cas, nomme « Building_Use ». Les axes principaux du rapport traitent les problématiques de géocodage de masse, de snapping de points/informations géographiques, ainsi que la ventilation de surface. Pour répondre aux besoins de l'entreprise, ces chaînes de traitements visant à consolidés les données doivent être elles-mêmes consolidées et améliorées, en termes de performance mais aussi de précision.

MOTS-CLES : Chaîne de traitements, Données, Data-Set, Workflows, Snapping, Géocodage, Ventilation.

The work presented in this thesis is about the implementation of solutions wich can consolidate the processing chains intended to affect geographical informations to the buildings. This is a step towards the creation of models that will feed digital models representing urban projects. These models will be contained in a web tool that will allow the territory's actors to carry out actions trough modular scenarios on an interactive 3D platform, representing the studied sector. It'll allowed them to see their impacts trought indicators. All the reflection is mainly based on the processing phase, wich is about consolidation and allocation of the collected data wich will constitute in this case a particular data-set, named « Building-Use ». The main axes presented in this paper deal with these themes : mass geocoding, snapping of points/geographical information and how to ventilate surface. In order to meet

the need of the company, these processing chains aiming at consolidating datas must themselves be consolidated and improved, in terms of performance but also in term of precision.

KEYWORDS : Processing chains, Data, Data-set, Workflows, Snapping, Geocoding, Ventilation.






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Qui vit sans folie n'est pas si sage qu'il croit."   La Rochefoucault