Accueil
QUELQUES EXEMPLES DE TRAITEMENTS DES DONNÉES CADASTRALES AVEC QGIS, version ESSEN 2.14

Depuis la mise à disposition du plugin cadastre dans le logiciel QGIS, cet outil est un moyen facile, rapide et gratuit d'exploiter les données cadastrales. Son principal avantage à mes yeux réside dans l'association des données graphiques (EDIGEO) et des données informatives (MAJIC). En revanche, il n'est pas simple pour un non géomaticien d'exploiter les possibilités du logiciel. Ce qui suit n'est en aucun cas une documentation. Il s'agit plus modestement de donner quelques exemples d'utilisation qui, une fois qu'ils seront compris, permettront de tirer le maximum des outils à disposition.

Il faut d'abord que QGIS et le plugin cadastre soient installés. Il faut également disposer d'un jeu complet de données cadastrales pour une Commune. Le chargement des données étant bien documenté, ce point n'est pas abordé ici. Dans notre exemple, la base de données cadadstrale a été créée en SQLite-SPACIALite. Dernier point du préambule, les données MAJIC sont très nombreuses et disponibles dans des champs (colonnes) dont l'acronyme est peu parlant. Le CERTU publie un guide complet pour exploiter ces informations. Le choix architectural de la base de données fait par les développeurs du plugin complique encore les choses puisqu'ils ont créé plus de tables que de fichiers MAJIC. Les débutants vont devoir aller "à la peche aux informations" pour retrouver ces variables. C'est expliqué dans la première requête ci-dessous.

Tous nos exemples utilisent des requêtes SQL. Il faut donc se rendre dans l'interface idoine : Aller sur le menu
base de données=>Gestionnaire de base de données=>Gestionnaire de base de données.
Sélectionner la base de données (fichier SQLite). Cliquer sur l'icone "Fenêtre SQL". Saisissez ici vos commandes SQL ou collez les exemples suivants :


Quelques requêtes pour se faire la main :

Pour rechercher les tables ayant une variable commune nommée DNUPRO, collez la ligne suivante dans la fenêtre de requête :
select * from sqlite_master where type='table' and sql like '%DNUPRO%'

Pour obtenir la surface totale des bois :
select sum(dcntsf) from suf where dsgrpf='BR' or dsgrpf='BT'

rechercher les propriétaires de logements vacants :
select dprnlp as prenom,dnomlp as nom from proprietaire where dnupro in (select dnupro from local10 where dnatlc='V')

rechercher les parcelles dont le logement est vacant :
select parcelle from local10 where dnatlc='V'

Créer une couche graphique à partir de la précédente requête :
select geom from geo_parcelle where geo_parcelle in (select parcelle from local10 where dnatlc='V')
en bas à gauche de l'écran de requête, cocher "charger en temps que nouvelle couche" ; dans "nom de la couche", mettre un nom quelconque, exemple "verger", puis cliquer sur Charger. La nouvelle couche est maintenant visible dans QGIS.

Créer une table graphique avec les valeurs locatives :
select geo_parcelle.geom, pev.dvlpera,local10.parcelle
from geo_parcelle,local10,pev
where geo_parcelle.geo_parcelle=local10.parcelle
and local10.invar=pev.invar
and (local10.cconlc='MA' or local10.cconlc='AP')
Lorsque cette nouvelle table est chargée dans QGIS, on peut colorier les polygones selon un gradient. Il devient alors facile de repérer les immeubles à forte valeur locative ainsi que les plus faibles valeurs.

Construire une couche graphique avec les parcelles, les noms des propriétaires, l'adresse de chaque parcelle et la date de la dernière mutation.
select geo_parcelle.idu,geo_parcelle.supf,geo_parcelle.geom,parcelle.jdatat,parcelle.ccosec,
     parcelle.dnupla,parcelle.dnupro,parcelle.dnvoiri,parcelle.cconvo,parcelle.dvoilib,proprietaire.ddenom,
          proprietaire.dlign3,proprietaire.dlign4,proprietaire.dlign6
               from geo_parcelle,parcelle,proprietaire
                    where geo_parcelle.geo_parcelle=parcelle.parcelle and parcelle.dnupro=proprietaire.dnupro

On peut procéder autrement : supprimer la variable "geo_parcelle.geom" de la requête précédente et lorsque le résultat est inséré dans QGIS, établir une jointure entre la couche "parcelle" et la nouvelle couche. Il faut cliquer-droit sur la couche parcelle puis propriétés puis jointure


La requête la plus importante :

Pour tirer un maximum d'information des données cadastrales, il faut établir des jointures entre les tables qui nous intéressent. On utilise pour cela des variables communes à plusieures tables mais n'existe pas de "lien naturel" dans cette base de données.
Il y a trois noms de colonnes qui permettent ces liaisons. Ce sont les numéros de parcelles pour les tables "non bâti" , la variable "INVAR" pour les données du bâti qui est un numéro unique pour chaque bâtiment et la variable "DNUPRO" pour l'identifiant des propriétaires.
On va donc créer une table contenant ces trois variables, l'insérer dans le projet QGIS et sauvegarder ce dernier. Ainsi, on pourra faire toutes les requêtes imaginables depuis cette table puisqu'elle contient au moins une variable commune aux autres tables :
select parcelle, dnupro,invar
   from
      (
      select * from parcelle
      left outer join local10 on parcelle.parcelle=local10.parcelle
      )



Ce qui suit a été écrit avant l'existence du plugin CADASTRE et n'a plus d'utilité aujourd'hui. Cela reste en place pour des raisons purements didactiques.
EXEMPLES DE TRAITEMENT DES FICHIERS DU CADASTRE
Traiter les fichiers MAJIC
La DGI met à disposition des collectivités les informations cadastrales. Les fichiers contenant ces données sont dans des formats particuliers dont le traitement n'est pas simple. Cette page propose des solutions entièrement gratuites. Les formats de fichiers sont sous 3 formes :
- plans au format RASTER (non traité ici)
- plans au format vectoriel (fichiers PCI ou EDIGEO)
- informations cadastrales souvent appelées matrice cadastrale (fichiers MAJIC III)

TRAITEMENT DU PLAN SOUS FORME VECTORIEL

Les exemples donnés ici utilisent Windows. Moyennant de légères adaptations, ils peuvent fonctionner sous Linux.
Logiciels à installer :

- 7-ZIP
- GDAL, version 1.9 ou supérieure
Le plan vectoriel est souvent livré dans autant de fichiers compressés que de communes. Nous allons les convertir en Shapefiles à l'aide de GDAL.
GDAL est une batterie de logiciels. Nous n'en utiliserons qu'un seul : OGR2OGR. Après l'installation de GDAL, on obtient une fenêtre de commandes dans le menu Démarrer.

Obtenir des shapefilesObtenir un fichier SQLite
Pour transformer une section du cadastre de EDIGEO vers Shapefile, on doit écrire cette commande dans la fenêtre GDAL :
ogr2ogr -f "Shapefile" fichier.THF fichier.shp
l'option -f indique le format de transformation attendu. Selon les versions de GDAL, l'ordre des fichiers d'entrée (THF) et de sortie (SHP) peut être inversé.
Cette commande est simple. Il faut cependant la répéter pour chaque section, ce qui devient rapidement fastidieux. De plus, on obtient autant de fichiers SHP que de couches (layers) ce qui est pénible à charger dans un SIG. La suite est une solution pour automatiser le traitement par lots des fichiers compressés.

Le script ci-dessous traite d'un coup, toutes les sections d'une Commune. Il décompresse (unzip) le fichier communal et crée un dossier fusion.sph contenant toutes les couches de la commune
Il faut copier le code suivant (en bleu) dans un fichier texte qui portera l'extension ".bat". On peut utiliser le bloc-note :

@echo off
for /f "delims=" %%a In ('dir /ad/b/s') Do
    (
    "c:\program files (x86)\7-zip\7z.exe" x %%a\*.bz2
    )

"c:\program files (x86)\7-zip\7z.exe" x *.tar
    (
    ogr2ogr -f "ESRI Shapefile" %%A.shp %%A
    )

FOR /F %%B IN ('DIR *.shp /b') DO
    (
    ogr2ogr -f "ESRI shapefile" -append fusion.shp %%B
    )

del *.VEC
del *.GEN
del *.GEO
del *.QAL
del *.SCD
del *.DIC
del *.thf
del *.tar
FOR /F %%C IN ('DIR *thf.shp /b') DO
(
rmdir /S /Q %%C
)


Enregistrez ce fichier avec le suffixe .bat exemple, THF2SHP.bat et placez-le dans le même dossier que les fichiers THF.
Depuis la fenêtre de commandes GDAL, déplacez-vous dans le dossier contenant les fichiers compressés d'une Commune. Exemple, si les THF sont dans le dossier C:\utilisateur\toto\edigeo, tapez la commande :
cd C:\utilisateur\toto\edigeo
Maintenant, il suffit de taper le nom du fichier BAT pour traiter les fichiers THF, exemple :THF2SHP.bat.
  SQLite est une base de données. GDAL, ou plutôt OGR2OGR va stocker tous les layers sous forme de tables. Cette soution offre un autre avantage intéressant : puisque c'est une base de données, on pourra y intégrer les données MAJIC et n'avoir qu'un seul fichier à gérer. QGIS gère parfaitement les fichiers SQLite.
Il faut copier le code suivant dans un fichier texte qui portera l'extension ".bat" On peut utiliser le bloc-note :
@echo off
for /f "delims=" %%a In ('dir /ad/b/s') Do
(
"c:\program files (x86)\7-zip\7z.exe" x %%a\*.bz2
)
"c:\program files (x86)\7-zip\7z.exe" x *.tar

FOR /F %%A IN ('DIR *.THF. /b') DO
(
ogr2ogr -f "SQLite" %%A.sqlite %%A
)
FOR /F %%B IN ('DIR *.sqlite /b') DO
(
ogr2ogr -f "SQLite" -append fusion.sqlite %%B
)
del *.thf.sqlite
del *.tar
del *.vec
del *.scd
del *.qal
del *.geo
del *.gen
del *.dic
del *.thf

Enregistrez ce fichier avec le suffixe .bat exemple, THF2SQLITE.bat dans le dossier contenant les fichiers d'une Commune.
Depuis la fenêtre de commandes GDAL, déplacez-vous dans le dossier communal et tapez la commande : THF2SQLITE.bat
Le résultat se trouve dans le fichier fusion.sqlite

TRAITEMENT DES FICHIERS MAJIC, 3 et plus
. Import_majic3.xls est un fichier Excel contenant un programme (macro) VBA qui lit les fichiers MAJIC du cadastre et stocke les données dans autant d'onglets que d'article. Chaque onglet est une plage nommée portant le nom de l'article. Il est donc possible de faire des requêtes SQL depuis une base de données via ODBC.
Télécharger Import_majic3 pour Excel 2003, limté à 65 000 lignes ou Import_majic3_XL2007 pour Excel 2007 à 2013 avec plus d'un million de lignes. La notice d'utilisation est dans le fichier.
Une prochaine version, en cours de développement, générera les instructions SQL qu'il suffira de copier-coller dans un logiciel de base de données ce qui intégrera directement les données MAJIC dans la base de données.
Pour information, Excel-VBA permet d'envoyer directement les données MAJIC dans une base de données existante. Seulement, ça demande quelques interventions préalables sur le PC. Ca n'est pas trop compliqué mais pas non plus à la porté du premier venu. Si vous êtes intéressé, contactez-moi !