Intégration de la base de données d'occupation du sol du Languedoc-Roussillon de SIGLR

Procédure (adaptez les noms de fichiers à votre cas)

  • Télécharger de l'archive qui nous intéresse sur la page :

http://ocsol.siglr.net/index.php?option=com_docman&task=cat_view&gid=14&Itemid=5

  • Transformer le shp obtenu aprés décompression de l'archive :
shp2pgsql -s 27572 -g geometrie -I V0_OCSOL_LR_POLY_2006_L2E_SHP_NOBD.shp occsol_2006>occsol_2006.sql

puis

psql -f occsol_2006.sql -h addresse_ip_hote -U utilisateur nom_base_de_donnée
  • On peut maintenant supprimer la redondance et les attributs “inutiles” :
CREATE TABLE poste_occsol
(
  id_poste character varying(3) NOT NULL,
  libelle character varying(100),
  description text
);
ALTER TABLE poste_occsol ADD CONSTRAINT libelle_occsol_pkey PRIMARY KEY (id_poste);
 
INSERT INTO poste_occsol (SELECT DISTINCT cde_06, intit_06, NULL FROM occsol_2006);
 
ALTER TABLE occsol_2006 DROP COLUMN bd06_;
ALTER TABLE occsol_2006 DROP COLUMN bd06_id;
ALTER TABLE occsol_2006 DROP COLUMN niv1_06;	/* la fonction substring(cde_06 FROM 1 FOR 1) fera l'affaire */
ALTER TABLE occsol_2006 DROP COLUMN niv2_06;	/* la fonction substring(cde_06 FROM 2 FOR 1) fera l'affaire */
ALTER TABLE occsol_2006 DROP COLUMN niv3_06;	/* la fonction substring(cde_06 FROM 3 FOR 1) fera l'affaire */
ALTER TABLE occsol_2006 DROP COLUMN intit_06;	/* on utilisera une jointure sur la table poste_ocsol */
ALTER TABLE occsol_2006 DROP COLUMN int_06;
ALTER TABLE occsol_2006 RENAME gid TO id_entite_occsol;
ALTER TABLE occsol_2006 ALTER COLUMN cde_06 TYPE character varying(3);
ALTER TABLE occsol_2006 RENAME cde_06 TO id_poste;
ALTER TABLE occsol_2006 ADD CONSTRAINT fk_id_poste_est_occsol FOREIGN KEY (id_poste) REFERENCES poste_occsol(id_poste);

Résolution des problèmes d'intégration de la base d'occupation du sol

Utilisation de la fonction CleanPolygons

Les données, valides sous mapinfo sont transformées par shp2pgsql. Lors de leur insertion dans la base postgis, un

SELECT count(*) FROM occsol WHERE isvalid(geometrie) IS false;

retourne le résultat 983!!!

Ce qui présage des erreurs lors de l'exécution de requêtes géographiques. Une première tentative de correction avec la requête suivante :

UPDATE occsol SET geometrie=buffer(geometrie,0) WHERE isvalid(geometrie) IS false;

nous permet d'avoir 0 comme résultat à la requête précédente.

Cependant, une première requête spatiale calculant la part de chaque poste d'occupation du sol de différents périmètres retourne une surface totale supérieure à la surface de l'aire d'étude.

Les géométries sont corrigées mais la couche contient des objets superposés!

Le wiki de PostGIS et particulièrement cette page nous apportent la solution : http://trac.osgeo.org/postgis/wiki/UsersWikiCleanPolygons

integration_donnees/externes/siglr.txt · Dernière modification: 2011/06/07 16:40 par admin_wiki_sicen
www.chimeric.de Creative Commons License Valid CSS Propulsé par DokuWiki Get firefox!! Changements récents - flux RSS Valid XHTML 1.0 Hébergé par Alwaysdata