Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 27 July 2012 09:01

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

requête SQL sur fichiers DGI

Bonjour,

URGENT

je suis graphiste sur GEOMAP GIS et je connais un peu FME. Je n'ai jamais fait de requête SQL mais le service Informatique interne peut m'aider .

En l'absence du geomaticien habituel, le service Urbanisme de ma ville me demande d'extraire un fichier Xls des données cadastrales (DGI , wGeoPC).

- En fonction d'une section x, rechercher les adresses et noms des propriétaires de Bâtiments qui ont la catégorie 6,7,8 (classification de qualité )

Si vous avez  déjà fait ce genre de requête, es-ce techniquement réalisable par une novice ??? si oui alors je cherche aussi les "traductions " des noms de tables (ou puis-je les trouver ?) pour mieux comprendre le langage...

Merci pour votre aide
Christine

Hors ligne

 

#2 Fri 27 July 2012 16:52

simo lay
Participant assidu
Date d'inscription: 8 Dec 2011
Messages: 172

Re: requête SQL sur fichiers DGI

Bonjour,
est ce que tes bases DGI sont spatiales si oui une requête d'intersection entre la couche des sections et  la couches des parcelles(avec les propriétaires)  suffit, si non  il faut se baser sur la table des propriétaires et tu fais une sélection sur la référence de parcelle qui contient la section

Dernière modification par simo lay (Fri 27 July 2012 17:04)

Hors ligne

 

#3 Mon 30 July 2012 12:15

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

Re: requête SQL sur fichiers DGI

Bonjour,

Oui, elles sont spatiales, pourquoi?

Christine GUILLARD

Hors ligne

 

#4 Mon 30 July 2012 14:09

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: requête SQL sur fichiers DGI

Bonjour,

Le problème c'est aussi que ne connaissant pas le modèle MAJIC utilisé par vos services, il est difficile de vous donner le chemin à emprunter pour créer votre requête SQL.

Quelques pistes peuvent être trouvée sur le blog parcellair de Georezo (ici : http://georezo.net/blog/)

En attendant :

Code:

/*
Sous réserve d'utiliser une base Oracle
*/

SELECT LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0') AS "Section Cadastrale",
MJ2_BATI.DNVOIRI AS "Numéro de voirie du logement",
       MJ2_BATI.DVOILIB AS "Libellé de voie du logement",
       D.CCOAFF,
       D.DCAPEC AS "Catégorie",
       D.DCETLC AS "Coeff d'entretien",
          --COUNT (D.INVAR) AS "NB LOGEMENT",
          MJ2_BATI.CCOCOM
       || '000'
       || LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0')
       || LPAD (MJ2_BATI.DNUPLA, 4, 0)
          AS CODE_PARC,

       MJ2_LOCAL.JANNAT AS "Année de construction",
       CASE
          WHEN MJ2_LOCAL.JANNAT BETWEEN 1949 AND 1974 THEN '1949 - 1974'
          WHEN MJ2_LOCAL.JANNAT BETWEEN 1975 AND 1989 THEN '1975 - 1989'
          WHEN MJ2_LOCAL.JANNAT BETWEEN 1990 AND 2003 THEN '1990 - 2003'
          WHEN MJ2_LOCAL.JANNAT > 2003 THEN 'post 2003'
          ELSE 'avant 1949'
       END
          AS GROUPE_DATE,
       MJ2_LOCAL.CCONLC AS "Nature du local",

       MJ2_LOCAL.DNATLC,
       CASE MJ2_LOCAL.DNATLC
          WHEN 'D' THEN 'Domicile principal occupé par le propriétaire'
          WHEN 'L' THEN 'Loué'
          WHEN 'P' THEN 'Occupé par le propriétaire'
          WHEN 'V' THEN 'Vacant'
          ELSE DNATLC
       END
          AS OCCUPATION_MJ3,
       DECODE (MJ2_PROPRIO.DNATPR,
               'ECF', 'ECONOMIQUEMENT FAIBLE (NON SERVI)',
               'FNL', 'FONCTIONNAIRE LOGE',
               'DOM', 'PROPRIETAIRE OCCUPANT DOM',
               'HLM', 'OFFICE HLM',
               'SEM', 'SOCIETE D ECONOMIE MIXTE',
               'TGV', 'SNCF',
               'RFF', 'RESEAU FERRE DE FRANCE',
               'CLL', 'COLLECTIVITE LOCALE',
               'CAA', 'CAISSE ASSURANCE AGRICOLE',
               '')
          AS "Nature de la personne",
       CASE
          WHEN MJ2_PROPRIO.CCOGRM = '0 ' THEN 'Personne Physique'
          ELSE 'Personne Morale'
       END
          AS "type de propriétaire",
       MJ2_PROPRIO.CCOGRM AS "code personne morale",
       DECODE (TRIM (MJ2_PROPRIO.CCOGRM),
               0, 'PERSONNES MORALES NON REMARQUABLES',
               1, 'ETAT',
               2, 'REGION',
               3, 'DEPARTEMENT',
               4, 'COMMUNE',
               5, 'OFFICE HLM',
               6, 'PERSONNES MORALES REPRESENTANT DES SOCIETES',
               7, 'COPROPRIETAIRE',
               8, 'ASSOCIE',
               9, 'ETABLISSEMENTS PUBLICS OU ARGANISMES ASSIMILES',
               '')
          AS "Type de personne morale",
       CASE TRIM (MJ2_PROPRIO.GTOPER)
          WHEN '1'
          THEN
                CASE TRIM (BOTH FROM MJ2_PROPRIO.DQUALP)
                   WHEN 'M' THEN 'M.'
                   ELSE TRIM (BOTH FROM MJ2_PROPRIO.DQUALP)
                END
             || ' '
             || REGEXP_SUBSTR (MJ2_PROPRIO.DDENOM1, '([A-Z]*)', 1)
             || ' '
             || REGEXP_SUBSTR (MJ2_PROPRIO.DDENOM1,
                               '[^\/]+',
                               1,
                               2)
          ELSE
             MJ2_PROPRIO.DDENOM1
       END
          AS "Propriétaire"
  FROM    MJ2_DESCPEV D /*La table de description de la partie évaluation suffisante pour les données bâti*/
       INNER JOIN
          (   (   MJ2_BATI /*La table du bâti*/
               INNER JOIN
                  MJ2_LOCAL /*La table des locaux décrits*/
               ON MJ2_BATI.INVAR = MJ2_LOCAL.INVAR)
           INNER JOIN
              MJ2_PROPRIO /*La table des propriétaires*/
           ON (    MJ2_LOCAL.DNUPRO = MJ2_PROPRIO.DNUPRO
               AND MJ2_BATI.CCOCOM = MJ2_PROPRIO.CCOCOM))
       ON (D.INVAR = MJ2_BATI.INVAR)
 WHERE     DNUPEV = 001
       AND D.CCOAFF = 'H' /*Contrainte pour ne s'occuper que de l'habitat*/
       AND MJ2_PROPRIO.DNULP = 01 /*Contrainte sur le numéro d'ordre du propriétaire*/
       AND REGEXP_SUBSTR (D.DCAPEC, '^((6)|(7)|(8))') IS NOT NULL /*Contrainte sur les catégories de logement*/
GROUP BY D.CCOAFF,
         D.DCAPEC,
         D.DCETLC,
            MJ2_BATI.CCOCOM
         || '000'
         || LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0')
         || LPAD (MJ2_BATI.DNUPLA, 4, 0),
         MJ2_LOCAL.JANNAT,
         -- MJ2_LOCAL.JDATAT,
         MJ2_LOCAL.CCONLC,
         MJ2_LOCAL.GPDL,
         MJ2_LOCAL.DNATLC,
         CASE MJ2_LOCAL.DNATLC
            WHEN 'D' THEN 'Domicile principal occupé par le propriétaire'
            WHEN 'L' THEN 'Loué'
            WHEN 'P' THEN 'Occupé par le propriétaire'
            WHEN 'V' THEN 'Vacant'
            ELSE DNATLC
         END,
         CASE
            WHEN MJ2_PROPRIO.CCOGRM = '0 ' THEN '1'
            ELSE MJ2_PROPRIO.GTOPER
         END,
         MJ2_PROPRIO.DNATPR,
         MJ2_PROPRIO.CCOGRM,
         MJ2_PROPRIO.DQUALP,
         MJ2_PROPRIO.GTOPER,
         MJ2_PROPRIO.DDENOM1,
         MJ2_BATI.DNVOIRI,
         MJ2_BATI.DVOILIB;

Voilà, en espérant que cela vous sera utile.

Cordialement


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#5 Mon 30 July 2012 14:09

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: requête SQL sur fichiers DGI

Bonjour,

Je ne connais pas la structuration de vos données, mais si elles sont identiques à celles des fichiers de la DGFIP, le mieux selon moi est de faire une jointure sémantique sur le compte communal, du type :

Code:

SELECT prop.ddenom, prop.dlign3, prop.dlign4, prop.dlign5, prop.dlign6
FROM bati, prop
WHERE prop.ccocom LIKE bati.ccocom
AND prop.dnupro LIKE bati.dnupro
AND bati.ccocom LIKE '001'
AND bati.ccosec LIKE 'XX'

Si vous l'exécutez dans votre SGBD, vous récupèrerez pour chaque propriété bâtie de la section XX de la commune '001' : le propriétaire et son adresse. Vous aurez normalement la possibilité de les exporter en csv et ainsi les visualiser sous Excel.

La nomenclature des champs (ici nommés tels quels) est délivrée par la DGFIP en même temps que les fichiers fonciers.

Sans garantie bien sûr, la requête est à adapter selon vos données.

En espérant que cela aidera.

Dernière modification par VianneyD (Mon 30 July 2012 14:12)


Vianney Dugrain

Hors ligne

 

#6 Mon 30 July 2012 14:41

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: requête SQL sur fichiers DGI

Bonjour Vianney,

Quelle est l'utilité d'utiliser des LIKe pour les jointures sans le symbol % ?

Pour moi cela revient à utiliser le symbol = sans pouvoir utiliser d'index.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#7 Mon 30 July 2012 14:55

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: requête SQL sur fichiers DGI

Bonjour,

C'est juste une (mauvaise !) habitude que j'ai prise d'utiliser des LIKE pour comparer des caractères.
Le = est beaucoup plus approprié ici, il est vrai.


Vianney Dugrain

Hors ligne

 

#8 Mon 30 July 2012 16:26

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

Re: requête SQL sur fichiers DGI

Merci à vous tous pour votre aide.

Voici ce que ma collègue informaticienne m'a sorti comme données.
J'oserai encore abuser de votre collaboration pour vous demander comment peut-on faire pour exporter sur un tableau XLS (sans passer par copier/coller)

Bonne fin de journée

Christine GUILLARD


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#9 Mon 30 July 2012 16:32

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: requête SQL sur fichiers DGI

Bonjour,

Quelque chose comme cela  (pour postgreSQL) :

Code:

CREATE TABLE TEMP AS SELECT ...

Sous Oracle cela devrait fonctionner sans le "TEMP" qui permet de créer une table temporaire (qui sera effacer lors de la déconnexion).

Dans un deuxième temps un COPY INTO file permet de sauver le contenu de la requête au format CSV.

Les pro d'Oracle donneront les requêtes équivalentes smile


Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Mon 30 July 2012 16:42

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: requête SQL sur fichiers DGI

SQLDevelopper sait très bien faire ça tout seul à mon avis. Genre clic droit sur le résultat.
Sinon,

Code:

Spool c:\monnomdefichier.csv
<la requête>
Spool off

Mais bon c'est capital de savoir ça pour faire du Oracle. ^^


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#11 Tue 31 July 2012 09:30

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

Re: requête SQL sur fichiers DGI

Merci

Christine GUILLARD

Hors ligne

 

#12 Wed 01 August 2012 16:58

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2094
Site web

Re: requête SQL sur fichiers DGI

Christine

Attention cependant à l'utilisation du critère "DCAPEC" car il n'est pas tenu à jour, de + il est normal qu'apparaissent beaucoup de logements HLM puisque ceux ci sont automatiquement comptabilisés dans certaines catégories et aussi pour les logements financés avec des prêts aidés je crois.
Il serait bon d'approfondir la question de savoir ce qu'est exactement le demande ? si c'est un indicateur pour une copro par exemple il est intéressant d'extraire la part du locatif et des vacants, ...
Par ailleurs dans mes fichiers j'ai trouvé aussi des classifications 6M, 7M, ... je ne sais pas si ça a un sens particulier mais il faut peut-être en tenir compte dans la requête ?

AlineC

Hors ligne

 

#13 Thu 02 August 2012 09:14

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

Re: requête SQL sur fichiers DGI

Aline

Merci pour l'info mais J'ai fournis ce fichier au service Urba et cela semble leur convenir...
Dans quel "critère" aurais-je du trouver ces qualifications (catégories) ?

Bonne fin de soirée

Christine GUILLARD

Hors ligne

 

#14 Thu 02 August 2012 09:30

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: requête SQL sur fichiers DGI

Bonjour,

En faisant :

REGEXP_SUBSTR (D.DCAPEC, '^((6)|(7)|(8))') IS NOT NULL


Cela permet d'avoir les valeurs 6,7,8 de CAPEC mais aussi 6M, 7M, 8M.

Cordialement,


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#15 Thu 02 August 2012 13:45

Christine Guillard
Participant occasionnel
Date d'inscription: 25 Jul 2012
Messages: 17

Re: requête SQL sur fichiers DGI

Bonjour

Merci beaucoup pour cet info, nous allons vérifier sur notre base

Bonne journée

Christine GUILLARD

Hors ligne

 

Pied de page des forums

Powered by FluxBB