3liz / QgisCadastrePlugin

A QGIS plugin which helps users to import the french land registry ('cadastre') data into a database. It is meant to ease the use of the data in QGIS by providing search tools and appropriate layer symbology.
GNU General Public License v2.0
60 stars 41 forks source link

Compatibilité du plugins avec données de Guyane #206

Closed mdouchin closed 2 years ago

mdouchin commented 4 years ago

Je rapporte ici les questions d'un utilisateur Guyanais

Nous avions essayé d'intégrer les données Guyane mais nous rencontrions des problèmes d'import en raison de la taille des communes.

Savez-vous si des correctifs ont permis de résoudre ce problème ? Je viens d'essayer d'intégrer les données 2019 mais il semble qu'il y ait toujours un blocage. > Je ne sais pas si c'est le même soucis.

mdouchin commented 4 years ago

Quelques éléments de réponse:

Sur l'erreur indiquée dans la copie d'écran, il semble que le problème vienne du test de conformité entre le code du département et de la direction renseignés dans la boîte de dialogue d'import et celui inscrit dans les fichiers MAJIC. Avez vous essayé avec code département = 97 et code direction = 3 ?

Au sujet des grosses communes, le souci est-il reproductible avec l'import des données EDIGEO seules ? Si oui, pourriez vous svp m'envoyer un lien pour télécharger ces données ? Si je me souviens bien, les géométries de certaines communes étaient tellement grosses (de très nombreux noeuds) que l'import s'arrêtait ?

Au sujet du millésime 2019, le plugin 1.7.1 ne le supporte pas (comme le montre l'absence de l'année dans les listes déroulantes de la boîte de dialogue, ainsi que l'aide)

Gustry commented 2 years ago

En test unitaire en local et dans QGIS bureautique, l'import se passe bien pour la commune de Rémire Montjoly https://github.com/3liz/QgisCadastrePlugin/blob/master/cadastre/tests/test_import_data.py#L34..L47

rldhont commented 2 years ago

En testant l'import EDIGeo commune par commune (je n'ai pas encore testé toutes les communes):

rldhont commented 2 years ago
rldhont commented 2 years ago

Pour 973303 IRACOUBO, l'erreur survient lors de la création de la table parcelle_info: ERREUR: entier en dehors des limites

BEGIN;SET search_path = "cadastre_guyane", public, pg_catalog;

             -- Création de la table parcelle_info
             DROP TABLE IF EXISTS "cadastre_guyane".parcelle_info;

             CREATE TABLE "cadastre_guyane".parcelle_info
             (
              ogc_fid integer,
              geo_parcelle text,
              idu text,
              tex text,
              geo_section text,
              nomcommune text,
              codecommune text,
              surface_geo bigint,
              contenance bigint,
              lot text
             );
             SELECT AddGeometryColumn ( current_schema::text, 'parcelle_info', 'geom', 2972 , 'MULTIPOLYGON', 2 );

             INSERT INTO "cadastre_guyane".parcelle_info
             SELECT gp.ogc_fid AS ogc_fid, geo_parcelle, gp.idu AS idu, gp.tex AS tex, gp.geo_section AS geo_section,
             c.tex2 AS nomcommune, c.idu AS codecommune, Cast(ST_Area(gp.geom) AS integer) AS surface_geo, gp.supf AS contenance, 
             gp.lot AS lot,
             gp.geom AS geom
             FROM "cadastre_guyane".geo_parcelle gp
             INNER JOIN "cadastre_guyane".geo_commune c
             ON c.geo_commune = SUBSTRING(gp.geo_parcelle,1,6)
             ;

             ALTER TABLE "cadastre_guyane".parcelle_info ADD CONSTRAINT parcelle_info_pk PRIMARY KEY (ogc_fid);
             CREATE INDEX parcelle_info_geom_idx ON "cadastre_guyane".parcelle_info USING gist (geom);
             CREATE INDEX parcelle_info_geo_section_idx ON "cadastre_guyane".parcelle_info (geo_section);
             CREATE INDEX parcelle_info_codecommune_idx ON "cadastre_guyane".parcelle_info (codecommune );
             CREATE INDEX parcelle_info_geo_parcelle_idx ON "cadastre_guyane".parcelle_info (geo_parcelle );

             COMMENT ON TABLE "cadastre_guyane".parcelle_info IS 'Table de parcelles consolidées, proposant les géométries et les informations MAJIC principales, dont les propriétaires';
             COMMENT ON COLUMN parcelle_info.ogc_fid IS 'Identifiant unique (base de données)';
             COMMENT ON COLUMN parcelle_info.geo_parcelle IS 'Identifiant de la parcelle : année + département + direction + idu';
             COMMENT ON COLUMN parcelle_info.idu IS 'Identifiant de la parcelle (unique par département et direction seulement)';
             COMMENT ON COLUMN parcelle_info.tex IS 'Etiquette (code à 3 chiffres)';
             COMMENT ON COLUMN parcelle_info.geo_section IS 'Code de la section (lien vers table geo_section.geo_section)';
             COMMENT ON COLUMN parcelle_info.nomcommune IS 'Nom de la commune';
             COMMENT ON COLUMN parcelle_info.codecommune IS 'Code de la commune à 3 chiffres';
             COMMENT ON COLUMN parcelle_info.surface_geo IS 'Surface de la parcelle, calculée spatialement';
             COMMENT ON COLUMN parcelle_info.contenance IS 'Surface cadastrale de la parcelle';
             COMMENT ON COLUMN parcelle_info.lot IS 'Lot utilisé pendant l''import';

             COMMIT;
rldhont commented 2 years ago

L'erreur vient de cette expression: Cast(ST_Area(gp.geom) AS integer) AS surface_geo

rldhont commented 2 years ago

En fait le problème vient de parcelle dont la surface est supérieur à 2147483647 qui est la valeur maximale pour le type INTEGER. Il faut faire Cast(ST_Area(gp.geom) AS bigint) AS surface_geo comme dans la définition du champs surface_geo.

rldhont commented 2 years ago

Premier correctif pour l'import edigeo avec majic https://github.com/3liz/QgisCadastrePlugin/commit/a6790eb23c97883c0fb58b5cdfe5e3e4fc39208c disponible depuis la version 1.6.1

Autre correctif pour l'import edigeo simple https://github.com/3liz/QgisCadastrePlugin/commit/768969f29deec9fe4da55390cc188f3e77487ad1

rldhont commented 2 years ago

La version 1.14.2 permet de faire l'import EDIGeo seule.

J'ai réussi à faire un import EDIGeo + MAJIC sur la guyane avec le fichier fantoir national disponible ici https://adresse.data.gouv.fr/data/fantoir/

Je me permet de fermer ce ticket.