Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import incorrect des voies par Cadastre QGIS #3

Closed
MaelREBOUX opened this issue Jul 22, 2024 · 13 comments
Closed

Import incorrect des voies par Cadastre QGIS #3

MaelREBOUX opened this issue Jul 22, 2024 · 13 comments

Comments

@MaelREBOUX
Copy link

On a un souci avec l'utilisation du fichier FANTOIR généré : noter sur l'adresse :

image

au lieu de :

image

La requête à jouer pour vérifier les données :

  SELECT
    p.parcelle
    ,coalesce(
      CASE
              WHEN v.libvoi IS NOT NULL THEN trim(ltrim(p.dnvoiri, '0') || ' ' || trim(coalesce(v.natvoi, '')) || ' ' || v.libvoi)
              ELSE ltrim(p.cconvo, '0') || p.dvoilib
      END, '') AS requete_org
      ,trim(ltrim(p.dnvoiri, '0') || ' ' || trim(coalesce(v.natvoi, '')) || ' ' || v.libvoi) AS src_voie_voie
      ,ltrim(p.cconvo, '0') || p.dvoilib AS src_voie_parcelle
  FROM parcelle p
  LEFT OUTER JOIN voie v
      ON v.voie = p.voie
  WHERE 2>1
  AND parcelle = '3500810000A1300' ;

Donne :

parcelle       |requete_org               |src_voie_voie             |src_voie_parcelle            |
---------------+--------------------------+--------------------------+-----------------------------+
3500810000A1300|14 RUE DES ROSES TREMIERES|14 RUE DES ROSES TREMIERES|RUEDES ROSES TREMIERES       |

Ensuite on réimporte toutes les données mais avec un fichier FANTOIR généré par le script et cela donne :

parcelle       |requete_org                  |src_voie_voie|src_voie_parcelle            |
---------------+-----------------------------+-------------+-----------------------------+
3500810000A1300|RUEDES ROSES TREMIERES       |             |RUEDES ROSES TREMIERES       |
@MaelREBOUX
Copy link
Author

MaelREBOUX commented Jul 22, 2024

Conclusions :

  1. il y a un fallback sur la source parcellaire qui est mal formatée dans cadastre QGIS, parce que...
  2. les données du fichier généré par le script ne viennent pas charger la table voie

Pour 1/ -> issue à faire sur cadastre QGIS

Pour 2/ -> creuser....

@landryb
Copy link
Owner

landryb commented Jul 22, 2024

c'est probablement le meme probleme que 3liz/QgisCadastrePlugin#345 (comment)

la jointure sur v.voie = p.voie echoue parce que le champ voie dans la table parcelle contient la valeur de l'identifiant majic, qui n'est plus dans le champ voie de la table voie

il faut modifier la jointure pour que p.voie matche le champ correspondant dans v.voie avec un like sur les 6 premiers chars (le code insee) et les 4 derniers (le code rivoli ?)

@landryb
Copy link
Owner

landryb commented Jul 22, 2024

il n'y a rien a faire dans le code du script pour prendre ca en charge, c'est plutot du coté d'une adaptation du plugin qgis.. donc je pense que ce ticket peut être fermé, et la correction dans la PR d'adapation du plugin QGIS pour les données 2024/TOPO

@MaelREBOUX
Copy link
Author

Je remet les 2 fichiers qui correspondent au contenu de la table brute d'import :
tmp_fanr_2023.txt
tmp_fanr_2024_v1.txt

@landryb
Copy link
Owner

landryb commented Jul 22, 2024

je vois au moins 3 occurences de cette construction a potentiellement 'corriger' si le pb est bien ici.

./plugins/cadastre/scripts/plugin/edigeo_create_table_parcelle_info_majic.sql:LEFT OUTER JOIN [PREFIXE]voie v ON v.voie = p.voie
./plugins/cadastre/templates/parcelle_info_parcelle_majic.sql:    ON v.voie = p.voie
./plugins/cadastre/templates/proprietes_non_baties_line.tpl.sql:LEFT OUTER JOIN $schema"voie" v ON v.voie = p.voie

edit remplacer v.voie = p.voie par v.voie = substr(p.voie,0,7)||'00000'||substr(p.voie,12,4) a l'air de donner des résultats

@MaelREBOUX
Copy link
Author

MaelREBOUX commented Jul 22, 2024

On avance : il y a un pb sur les identifiants de voies.

Dans la table voie avec des données de 2023 :

350081003210022 2023 35 0 081 350081 0 0022 H RUE DES ROSES TREMIERES N 3 0 0 0 0000000 2012331 00321 1 TREMIERE 2024-07

Dans la table voie avec des données du script :

350081000000022 2023 35 0 081 350081 0 0022 H RUE DES ROSES TREMIERES N 3 0 0 0 0000000 2012331 TREMIE 2024-07

La différence est ici : 350081003210022 : il manque 321.

@MaelREBOUX
Copy link
Author

Ce qui confirme que la recherche par voie / adresse ne retourne aucune parcelle. CQFD.

@landryb
Copy link
Owner

landryb commented Jul 22, 2024

Ce qui confirme que la recherche par voie / adresse ne retourne aucune parcelle. CQFD.

ca fonctionne très bien ici avec 3liz/QgisCadastrePlugin#345 (comment)

@MaelREBOUX
Copy link
Author

Voici ce que donne la tentative de corriger le code de voie (voie) avec le ccovoique l'on trouve dans la table des parcelles et des propriétaires.

SET search_path = "cadastre_qgis";

-- récupération depuis la table des parcelles
UPDATE voie SET voie = p.voie
FROM cadastre_qgis.parcelle p WHERE voie.voie = substring(p.voie, 0, 7)||'00000'||p.ccoriv;

-- total|reste|pourcentage|
-- -----+-----+-----------+
--  340|   49|      14.00|

-- récupération depuis la table des propriétaires
UPDATE cadastre_qgis.voie SET voie = p.ccodep||p.ccodir||p.ccocom||p.ccovoi||p.ccoriv
FROM cadastre_qgis.proprietaire p WHERE voie.voie = p.ccodep||p.ccodir||p.ccocom||'00000'||p.ccoriv;

-- total|reste|pourcentage|
-- -----+-----+-----------+
--  340|   36|      11.00|

-- calcul de ce qui reste
SELECT *
FROM 
(SELECT count(*) AS total FROM voie) AS a,
(SELECT count(*) AS reste FROM voie WHERE substring(voie, 7, 5) = '00000') AS b,
(SELECT ROUND((SELECT count(*)::decimal AS reste FROM voie WHERE substring(voie, 7, 5) = '00000') / (SELECT count(*)::decimal AS total FROM voie) ,2)*100 AS pourcentage) AS c ;

@MaelREBOUX
Copy link
Author

SELECT table_name
FROM information_schema.columns
WHERE column_name = 'ccovoi'   AND table_schema = 'cadastre_qgis';
  • parcelle
  • local00
  • local10
  • proprietaire

On complète et on voir si on ramène qqs autres enregistrements mais on y croit moyen.

@MaelREBOUX
Copy link
Author

UPDATE cadastre_qgis.voie SET voie = l.ccodep||l.ccodir||l.ccocom||l.ccovoi||l.ccoriv
FROM cadastre_qgis.local00 l WHERE voie.voie = l.ccodep||l.ccodir||l.ccocom||'00000'||l.ccoriv;
 
UPDATE cadastre_qgis.voie SET voie = l.ccodep||l.ccodir||l.ccocom||l.ccovoi||l.ccoriv
FROM cadastre_qgis.local10 l WHERE voie.voie = l.ccodep||l.ccodir||l.ccocom||'00000'||l.ccoriv;

0 et 0 enregistrements modifiés.

@landryb
Copy link
Owner

landryb commented Jul 23, 2024

j'ai regardé pour la table parcelle de 2023 sur les 12 départements de la région AURA, et j'ai bien l'unicité des couples code insee/code rivoli:

qadastre@qadastre=> select count(distinct(voie)) from qad2023.parcelle;
 648786
qadastre@qadastre=> select count(distinct(substr(voie,0,7)||'00000'||substr(voie,12,4))) from qad2023.parcelle;
 648786

donc a mon avis on peut se passer de ccovoi sans soucis.

@landryb
Copy link
Owner

landryb commented Jul 26, 2024

@MaelREBOUX on peut fermer ?

@landryb landryb closed this as completed Jul 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants