2.10. Table d’exportation dgi_*

Les tables dgi_* sont vidées et remplies par le traitement Choix de l’exercice courant qui duplique plusieurs tables en les filtrant sur le seul exercice choisi lors du lancement du traitement.

Elles sont destinées à être utilisées dans d’autres applications comme openMairie.

Par exemple, OpenAdresse utilise les tables dgi_adresse_parcelle et dgi_adresse_uf pour associer une emprise à un point adresse en s’appuyant sur les codes rivoli.

Plus généralement dans les applications openMairie utilisant les fonctionnalités sig intégrées, elles servent à alimenter les paniers, fournissant ainsi des géométries toutes prêtes qui peuvent être assemblées pour représenter des objets métiers.

2.10.1. dgi_commune

  • dgi_commune bigint NOT NULL: incrément identifiant la commune
  • ccodep: code département sur 2 caractères
  • ccocom: code insee de la commune sur 3 caractères
  • libcom: dénomination de la commune sur 30 caractères
  • geom geometry(MultiPolygon,2154),: géométrie de la commune

Requète d’alimentation de la table:

INSERT INTO dgi_commune (dgi_commune, ccodep, ccocom, libcom, geom)
SELECT
  row_number() OVER(ORDER BY c.commune DESC) AS dgi_commune,
  c.ccodep,
  c.ccocom,
  c.libcom,
  g.geom
FROM commune c
JOIN geo_commune g ON g.geo_commune=c.geo_commune
WHERE c.actif IS TRUE;

2.10.2. dgi_section

  • dgi_section bigint NOT NULL: incrément identifiant la commune
  • ccodep: code département sur 2 caractères
  • ccocom: code insee de la commune sur 3 caractères
  • tex: code section sur 2 caractères
  • geom geometry(MultiPolygon,2154),: géométrie de la section

Requète d’alimentation de la table:

INSERT INTO dgi_section (dgi_section, ccodep, ccocom, tex, geom)
SELECT
  row_number() OVER(ORDER BY c.commune,s.tex DESC) AS dgi_commune,
  c.ccodep,
  c.ccocom,
  s.tex,
  s.geom
FROM commune c
JOIN geo_section s ON s.geo_commune=c.geo_commune
JOIN geo_commune g ON c.geo_commune=g.geo_commune
WHERE c.actif IS TRUE

2.10.3. dgi_parcelle

  • dgi_parcelle bigint NOT NULL: incrément identifiant la parcelle
  • code [ccosec][dnupla] sur 6 caractères
  • code_insee : [ccodep][code_insee de la commune] sur 5 caractères
  • section: [ccosec] sur 2 caractères
  • dnupla: [dnupla] sur 4 caractères
  • par_bati: parcelle avec bati booléen
  • geom geometry(MultiPolygon,2154): géométrie de la parcelle
  • the_geom_red geometry(MultiPolygon,2154): géométrie réduite de la parcelle

Requète d’alimentation de la table:

INSERT INTO dgi_parcelle (dgi_parcelle, code, code_insee, section, dnupla, geom)
SELECT
  row_number() OVER(ORDER BY geo_parcelle DESC) AS dgi_parcelle,
  code,
  code_insee,
  section,
  dnupla,
  geom
FROM
  (   SELECT
        g.geo_parcelle AS geo_parcelle,
        p.ccosec || p.dnupla AS code,
        p.ccodep || p.ccocom AS code_insee,
        p.ccosec AS section,
        p.dnupla AS dnupla,
        g.geom AS geom
      FROM geo_parcelle g
      JOIN parcelle p ON  g.parcelle = p.parcelle
      WHERE g.actif IS TRUE
    UNION
      SELECT
        g.geo_parcelle AS geo_parcelle,
        replace(s.tex,'0',' ')||substring(g.idu,9,4) AS code,
        substring(c.commune,5,2)||substring(c.commune,8,3) AS code_insee,
        replace(s.tex,'0',' ') AS section,
        substring(g.idu,9,4) AS dnupla,
        g.geom AS geom
      FROM geo_parcelle g
      JOIN geo_section s ON g.geo_section=s.geo_section
      JOIN geo_commune c ON s.geo_commune=c.geo_commune
      WHERE (g.parcelle IS NULL OR g.parcelle='') AND g.actif IS TRUE
  ) a

2.10.4. dgi_batiment

  • dgi_batiment bigint NOT NULL: incrément identifiant l’unité foncière
  • code character varying(14): [geo_batiment] clé primaire dans geo_batiment (cette valeur change chaque année) sur 14 caractères
  • type : dévivé de geo_dur sur 20 caractères
  • geom geometry(MultiPolygon,2154): géométrie du bâtiment
  • the_geom_red geometry(MultiPolygon,2154): géométrie réduite du bâtiment

Requète d’alimentation de la table:

INSERT INTO dgi_batiment (dgi_batiment, code, type, geom)
SELECT
  row_number() OVER(ORDER BY b.geo_batiment DESC) AS dgi_batiment,
  b.geo_batiment AS code,
  CASE WHEN geo_dur='01' THEN 'bâti dur' ELSE 'bâti léger' END AS type,
  b.geom AS geom
FROM geo_batiment b
WHERE b.actif IS TRUE;

2.10.5. dgi_uf

  • dgi_uf bigint NOT NULL: incrément identifiant l’unité foncière
  • code [ccosec][dnupla] sur 6 caractères
  • code_insee : [ccodep][code_insee de la commune] sur 5 caractères
  • section: [ccosec] sur 2 caractères
  • dnupla: [dnupla] sur 4 caractères
  • par_bati: parcelle avec bati booléen
  • geom geometry(MultiPolygon,2154): géométrie de la parcelle
  • the_geom_red geometry(MultiPolygon,2154): géométrie réduite de la parcelle

Requète d’alimentation de la table:

INSERT INTO dgi_uf (dgi_uf, code, code_insee, section, dnupla, geom)
SELECT
  row_number() OVER(ORDER BY g.geo_parcelle DESC) AS dgi_uf,
  p.ccosec || p.dnupla AS code,
  p.ccodep || p.ccocom AS code_insee,
  p.ccosec as section,
  p.dnupla as dnupla,
  g.geom_uf AS geom
FROM geo_parcelle g
JOIN parcelle p ON g.parcelle = p.parcelle
WHERE geom_uf is not null AND g.actif IS TRUE;

2.10.6. dgi_adresse_parcelle

  • dgi_adresse_parcelle bigint NOT NULL: incrément identifiant la ligne
  • parcelle text: code parcelle [ccosec][dnupla] sur 6 caractères
  • code_insee text: [ccodep][code_insee de la commune] sur 5 caractères
  • section character varying(2): [ccosec] de la parcelle
  • dnupla character varying(4):[dnupla] de la parcelle
  • code_rivoli text: code rivoli de la voie [ccodep][code_insee de la commune][ccoriv]
  • numero numeric: [dnvoiri] numéro dans la rue
  • repetition text: [dindic] indice de répétition (BIS, TER, …)
  • lib_voie text: [dvoilib] libellé de la voie
  • adresse text: [numero] [repetition] [lib_voie]
  • affichage text: [numero] [repetition]
  • cle_rivoli text: [-][code_rivoli][-]
  • cle_rivoli_numero text: [-][code_rivoli][-][numero][-]
  • cle_rivoli_numero_rep text: [-][code_rivoli][-][numero][-][repetition][-]
  • multi_adresse integer: nombre d’adresses adossées à la parcelle
  • geom geometry(MultiPolygon:2154): géométrie de l’emprise de l’adresse

Requète d’alimentation de la table:

INSERT INTO dgi_adresse_parcelle
SELECT
  row_number() OVER(ORDER BY parcelle DESC) AS dgi_adresse_parcelle,
  parcelle,
  code_insee,
  section,
  dnupla,
  code_rivoli,
  numero,
  repetition,
  lib_voie,
  numero||' '||CASE WHEN repetition='' THEN '' ELSE  repetition||' ' END||lib_voie AS adresse,
  numero||' '||CASE WHEN repetition='' THEN '' ELSE  repetition END AS affichage,
  '-'||code_rivoli||'-' AS cle_rivoli,
  '-'||code_rivoli||'-'||numero||'-' AS cle_rivoli_numero,
  '-'||code_rivoli||'-'||numero||'-'||repetition||'-' AS cle_rivoli_numero_rep,
  1 as multi_adresse,
  geom
FROM (
  SELECT DISTINCT
    l.ccosec || l.dnupla AS parcelle,
    l.ccodep || l.ccocom AS code_insee,
    l.ccosec AS section,
    l.dnupla AS dnupla,
    l.ccodep || l.ccocom||l.ccoriv AS code_rivoli,
    to_number(CASE WHEN trim(dnvoiri)='' THEN '0' ELSE trim(dnvoiri) END,'0000') AS numero,
    CASE WHEN trim(l.dindic) IN ('','-','6','7') THEN ''
      WHEN trim(l.dindic)='3' THEN 'TER'
      WHEN trim(l.dindic)='4' THEN 'QUATER'
      WHEN trim(l.dindic)='5' THEN 'CINQUIES'
      ELSE  trim(l.dindic) END AS repetition,
    trim(l.dvoilib) AS lib_voie,
    g.geom AS geom
  FROM local00 l
  JOIN geo_parcelle g ON g.parcelle=l.parcelle
  WHERE l.actif IS TRUE
) AS v;

2.10.7. dgi_adresse_uf

  • dgi_adresse_uf bigint NOT NULL: : incrément identifiant la ligne
  • parcelle text: code parcelle de l’unité foncière [ccosec][dnupla] sur 6 caractères
  • code_insee text: [ccodep][code_insee de la commune] sur 5 caractères
  • section character varying(2): [ccosec] de l’unité foncière
  • dnupla character varying(4):[dnupla] de l’unité foncière
  • code_rivoli text: code rivoli de la voie [ccodep][code_insee de la commune][ccoriv]
  • numero numeric: [dnvoiri] numéro dans la rue
  • repetition text: [dindic] indice de répétition (BIS, TER, …)
  • lib_voie text: [dvoilib] libellé de la voie
  • adresse text: [numero] [repetition] [lib_voie]
  • affichage text: [numero] [repetition]
  • cle_rivoli text: [-][code_rivoli][-]
  • cle_rivoli_numero text: [-][code_rivoli][-][numero][-]
  • cle_rivoli_numero_rep text: [-][code_rivoli][-][numero][-][repetition][-]
  • multi_adresse integer: nombre d’adresses adossées à l’unité foncière
  • geom geometry(MultiPolygon:2154): géométrie de l’emprise de l’adresse

Requète d’alimentation de la table:

INSERT INTO dgi_adresse_uf
SELECT
  row_number() OVER(ORDER BY parcelle DESC) AS dgi_adresse_uf,
  parcelle,
  code_insee,
  section,
  dnupla,
  code_rivoli,
  numero,
  repetition,
  lib_voie,
  adresse,
  affichage,
  cle_rivoli,
  cle_rivoli_numero,
  cle_rivoli_numero_rep,
  1 as multi_adresse,
  geom
FROM (
  SELECT DISTINCT
    parcelle,
    code_insee,
    section,
    dnupla,
    code_rivoli,
    numero,
    repetition,
    lib_voie,
    numero||' '||CASE WHEN repetition='' THEN '' ELSE  repetition||' ' END||lib_voie AS adresse,
    numero||' '||CASE WHEN repetition='' THEN '' ELSE  repetition END AS affichage,
    '-'||code_rivoli||'-' AS cle_rivoli, '-'||code_rivoli||'-'||numero||'-' AS cle_rivoli_numero,
    '-'||code_rivoli||'-'||numero||'-'||repetition||'-' AS cle_rivoli_numero_rep,
    geom
  FROM (
      SELECT DISTINCT
        l.ccosec || l.dnupla AS parcelle,
        l.ccodep || l.ccocom AS code_insee,
        l.ccosec AS section,
        l.dnupla AS dnupla,
        l.ccodep || l.ccocom||l.ccoriv AS code_rivoli,
        to_number(CASE WHEN trim(dnvoiri)='' THEN '0' ELSE trim(dnvoiri) END,'0000') AS numero,
        CASE WHEN trim(l.dindic) IN ('','-','6','7') THEN ''
          WHEN trim(l.dindic)='3' THEN 'TER'
          WHEN trim(l.dindic)='4' THEN 'QUATER'
          WHEN trim(l.dindic)='5' THEN 'CINQUIES'
          ELSE  trim(l.dindic) END AS repetition,
        trim(l.dvoilib) AS lib_voie,
        g.geom_uf AS geom
      FROM local00 l
      JOIN geo_parcelle g ON g.parcelle=l.parcelle
      WHERE l.actif IS TRUE AND
        l.parcelle NOT IN (SELECT parcellea FROM parcellecomposante)
            UNION
      SELECT DISTINCT
        uf.ccosec || uf.dnupla AS parcelle,
        uf.ccodep || uf.ccocom AS code_insee,
        uf.ccosec AS section,
        uf.dnupla AS dnupla,
        l.ccodep || l.ccocom||l.ccoriv AS code_rivoli,
        to_number(CASE WHEN trim(l.dnvoiri)='' THEN '0' ELSE trim(l.dnvoiri) END,'0000') AS numero,
        CASE WHEN trim(l.dindic) IN ('','-','6','7') THEN ''
          WHEN trim(l.dindic)='3' THEN 'TER'
          WHEN trim(l.dindic)='4' THEN 'QUATER'
          WHEN trim(l.dindic)='5' THEN 'CINQUIES'
          ELSE  trim(l.dindic) END AS repetition,
        trim(l.dvoilib) AS lib_voie,
        g.geom_uf AS geom
      FROM local00 l
              JOIN parcellecomposante pc ON pc.parcellea=l.parcelle
      JOIN parcelle uf ON pc.parcelle=uf.parcelle
              JOIN geo_parcelle g ON g.parcelle=uf.parcelle
              WHERE l.actif IS TRUE
      ) b
) c;