#1 Sun 07 September 2008 17:53
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour à tous,
je continue ma découverte merveilleuse du monde de la cartographie afin de créer une scène (Bretagne) pour un simulateur de vol à voile...
J'ai donc récupéré les fichiers Corine Land Cover et tout va bien jusqu'ici. Mon problème commence quand je veux exploiter le fichier SVG généré par QGIS. J'obtiens un fichier supérieur à 60Mo et les manipulations requises dans Inkscape plantent à cause de la taille du fichier !
Un aperçu de "l'image" que j'obtiens :
[img]http://www.maquettes-papier.net/condorbretagne/QGis.jpg[/img]
Pour remédier à ce problème je cherche à effacer ou regrouper les informations de la couche mais je bloque complètement. Seuls les polygones à l'intérieur du carré violet m'interessent. (Le carré voilet représente les limites de la scène)
Y'a-t-il moyen de supprimer les informations en dehors des limites ? J'ai essayé en mode édition de couche et en sélectionnant les infos en dehors mais le résultat n'est pas concluant
Deuxième interrogation : est-il possible de regrouper les valeurs que l'on obtient en affichant "valeurs uniques" (dans le cas des CLC, les valeurs 111,113,...)
Merci
Hors ligne
#2 Sun 07 September 2008 18:31
- xavier78
- Participant actif
- Date d'inscription: 12 Oct 2006
- Messages: 148
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour,
j'ai une solution mais elle n'est pas des plus évidentes.
Il est nécessaires d'installer Postgres/Postgis, d'importer tous tes fichiers vecteurs dans cette bdd et de faire une requête spatiale dans postgis telle qu'on peut en voir dans MapInfo à savoir une intersection entre ton rectangle et tes données vecteur.
Autre possibilité, utiliser Grass pour cela.
@+
Hors ligne
#3 Sun 07 September 2008 23:10
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
utiliser Grass pour cela
Pour l'instant je vais me rabbattre la dessus mais j'ai beau parcourir la doc et tous les tutos sur Grass je n'ai toujours pas réussi à passer d'une couche vecteur à Grass...
Auriez-vous une explication simple et rapide pour la mise en oeuvre de cette usine à gaz ? (de mon point de vue de néophite bien sûr)
Hors ligne
#4 Mon 08 September 2008 06:37
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour,
Il faut créer un Mapset tout d'abord (Grass n'utilise pas directement les couches de Quantum GIS) puis utiliser la commande d'import vectoriel dans les outils de Grass.
@+
Philippe
Philippe Lépinard
École de l'Aviation Légère de l'Armée de Terre
Hors ligne
#5 Tue 09 September 2008 16:03
- noxia
- Participant occasionnel
- Date d'inscription: 30 Jun 2008
- Messages: 48
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Hello,
ce problème (la résolution de ce problème) m'interesse, mais dans le cadre de la solution Postgres.
J'ai installé depuis longtemps postgres, j'ai crée une base posgis qui fonctionne nikel, et j'arrive à importer exporter des données posgis vers quantum gis.
Là où je "rame" encore, c'est
"à savoir une intersection entre ton rectangle et tes données vecteur."
.
Pourrais tu me détailler comment faire?
J'ai mis toutes mes couches en couches vectorielles sous postgis, j'ai par exemple plusieurs tables avec des champs dans le style 'the_geom', 'code_insee','numero_regroupement'.
je cherche, tout comme buzuc, à n'afficher mes donnéees que pour un type de 'numero_regroupement' par exemple. Mais comment faire?
Hors ligne
#6 Wed 10 September 2008 14:32
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour noxia,
on séloigne du sujet initial mais en double-cliquant sur la table que tu veux sélectionner dans QGIS, tu ouvres l'éditeur de requête qui te permet d'appliquer un ensemble de critères à ta sélection.
Si tu as besoin de manière récurrente de ta sélection, tu peux créer une vue dans postgresql et l'afficher dans QGIS
par exemple je veux créer la vue des communes de l'Aude :
CREATE VIEW commune_aude AS SELECT * FROM commune WHERE num_insee LIKE '11%';
Buzuc, as tu essayé de simplifier tes chemins avec Inkscape (onglet chemin => simplifier ou Ctrl + L) ?
Par ailleurs, je crois que GVSIG te permet de faire des intersections entre couches (geoprocess -> intersection).
Mathieu Bossaert
Dernière modification par Mathieu BOSSAERT (Wed 10 September 2008 14:35)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#7 Wed 10 September 2008 17:03
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Buzuc, as tu essayé de simplifier tes chemins avec Inkscape (onglet chemin => simplifier ou Ctrl + L) ?
Le problème c'est que le fichier SVG généré fait 60Mo et qu'Inkscape plante à chaque ouverture ! C'était mon objectif inital de faire le traitement dans Inkscape mais là ce n'est pas possible. Voilà pourquoi je voulai simplifier la carte pour obtenir un fichier svg plus petit.
Hors ligne
#8 Thu 11 September 2008 11:33
- noxia
- Participant occasionnel
- Date d'inscription: 30 Jun 2008
- Messages: 48
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour noxia,
on séloigne du sujet initial mais en double-cliquant sur la table que tu veux sélectionner dans QGIS, tu ouvres l'éditeur de requête qui te permet d'appliquer un ensemble de critères à ta sélection.
Si tu as besoin de manière récurrente de ta sélection, tu peux créer une vue dans postgresql et l'afficher dans QGIS
par exemple je veux créer la vue des communes de l'Aude :
CREATE VIEW commune_aude AS SELECT * FROM commune WHERE num_insee LIKE '11%';
Désolé ça ne répond pas à ma question. Je vais la poser ailleurs car c'est vrai que ça sort du contexte apparement.
Hors ligne
#9 Thu 11 September 2008 11:50
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Sinon concernant la simplification d'un multipolygones, car je crois que c'était le problème original, une solution est d'importer le fichier vecteur dans une base de données Postgre/PostGIS, puis d'utiliser la fonction Simplify de PostGIS, décrite ici :
http://main.merlin.com.ua/doc/postgis/docs/ch06.html
et en images ici:
http://www.bostongis.com/postgis_simplify.snippet
Sinon il existe de nombreux scripts Python qui permettent d'approfondir ca, à chaque fois en travaillant sur une géométrie dans PostGIS, comme ceux présents dans la librairie psycopg, décrit ici :
http://www.cartoweb.org/downloads/verte … ation.html
En espérant que ca réponde à la question,
Matthieu Rigal
Découvrez la constellation de satellites RapidEye, lancée le 29 août 2008
http://www.rapideye.de
Découvrez le blog du Master TGAE et les stages que suivent ses étudiants.
http://tgae0607.free.fr
Hors ligne
#10 Thu 11 September 2008 22:14
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Merci !
j'étudie tout ça, la simplification de polygones semble interessante maintenant il faut que je m'y mette...
Hors ligne
#11 Fri 12 September 2008 10:45
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
OK, c'est parti pour les interrogations !
J'ai installé PostGre/GIS, j'ai créé une base et j'ai importé un shp avec la commande shp2pgsql...
Le problème c'est que quand j'ouvre ma couche dans QGIS tous les index (pas sur du vocabulaire) ont été changés.
Au lieu d'avoir les valeurs de Corine Land Cover (112,113,...) j'ai d'autres chiffres qui ne sont pas classés. J'ai l'impression que ceux-ci correspondent aux polygones et non plus à un regroupement de polygones comme dans le fichier initial.
Help, mayday...
Autant pour moi ! J'ai classé selon le mauvais champ
Je poursuis ma découverte
Dernière modification par buzuc (Fri 12 September 2008 10:51)
Hors ligne
#12 Fri 12 September 2008 11:27
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
La simplification des polygones par requete (SIMPLIFY) n'a pas l'air de faire grand chose sur la couche!
Mais c'est peut-être parce qu'il faut sauvegarder les valeurs que me donne la requête ?
En effet j'ai fait un select et cela ne fait qu'afficher le résultat de la requête non?
Mon code :
Code:
SELECT simplify(the_geom,500) as "53simpl" FROM "53"
Auriez-vous une idée ?
Hors ligne
#13 Fri 12 September 2008 11:40
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bonjour,
Oui !
Code:
UPDATE 53 SET the_geom = simplify(the_geom,500);
Un conseil, créer une nouvelle colonne the_geom_simplify et mettez cette colonne à jour
Code:
SELECT addGeometryColumn('53','the_geom_simplify',27572,'MULTIPOLYGON',2); UPDATE 53 SET the_geom_simplify = simplify(the_geom,500);
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
#14 Fri 12 September 2008 14:54
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Ca avance à la vitesse grand V !
J'ai laissé tombé la simplification de polygone : trop de déformations même avec un paramètre à 100.
J'ai en fait décomposé le fichier CLC(Corine Land Cover) en plusieurs couches postGIS. une pour les forets, une pour l'habitat urbain et une pour les cultures.
Aucun soucis pour les deux premiers : j'ai deux fichiers d'environ 5Mo parfaitement exploitables dans InkScape.
La couche des cultures demande par contre à être simplifiée (svg de 18Mo !).
Je vais déja voir ce que ça donne en faisant une intersection entre la couche et les limites de ma carte comme suggéré par Xavier78.
Le problème est que je n'arrive pas à écrire la requête qui va bien.
Pourriez-vous me donner un exemple à partir duquel je peux extrapoler ?
J'ai aussi cherché la doc des fonctions PostGis mais je ne trove que des descriptions sommaires, y'a-t-il ça quelque part ?
Encore merci à tous
Hors ligne
#15 Fri 12 September 2008 15:02
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
commence par un SELECT * WHERE contains(table1.the_geom, table2.the_geom)
et vois si le résultat est ok.
Si oui crée une nouvelle table et fais un INSERT avant le SELECT
Tu vas y arriver !
Découvrez la constellation de satellites RapidEye, lancée le 29 août 2008
http://www.rapideye.de
Découvrez le blog du Master TGAE et les stages que suivent ses étudiants.
http://tgae0607.free.fr
Hors ligne
#16 Fri 12 September 2008 15:27
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
J'ai testé ta requête et j'ai un message d'erreur :
Code:
La requête va renvoyer 0 ligne(s). ERREUR: Un SELECT * sans table spécifiée n'est pas valide ********** Erreur ********** ERREUR: Un SELECT * sans table spécifiée n'est pas valide État SQL :42601
La même requête en ajoutant un from :
Code:
SELECT * FROM "clc53" WHERE contains("clc53".the_geom, "limites".the_geom)
me renvoi
Code:
La requête va renvoyer 0 ligne(s). ERREUR: entrée manquante de la clause FROM pour la table « limites » LIGNE 1 : ... SELECT * FROM "clc53" WHERE contains("clc53".the_geom, "limites".... ^ ********** Erreur ********** ERREUR: entrée manquante de la clause FROM pour la table « limites » État SQL :42P01 Caractère : 58
Je maîtrise assez bien SQL mais là j'avoue que les commandes "contains" ou l'opérateur d'intersection "&&" me donnent du fil à retordre.
De plus, mes deux couches n'ont pas le même SRID : clc est en Lambert II et les limites en WGS84.
Ca devient un peu le b..... mais je pense qu'il va falloir que je transforme la couche clc en WGS84 (SRID final que j'exploiterai)
Dernière modification par buzuc (Fri 12 September 2008 15:33)
Hors ligne
#17 Fri 12 September 2008 15:34
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Buzuc,
je pense qu'il faut citer les deux tables dans la clause from !
Code:
SELECT * FROM "53",limites WHERE contains("53".the_geom, "limites".the_geom) AND "53".the_geom && "limites".the_geom;
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
#18 Fri 12 September 2008 15:48
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Merci Yves, je viens de comprendre ça aussi.
Par contre pourquoi est-ce que les shp de CLC n'ont pas de SRID défini ? Normalement ils devraient être en "Lambert Zone II" mais quand je les ouvre dans QGIS c'est WGS84 qui est défini !
J'ai tenté de changer le SRID en enregistrant la couche sous un autre nom mais ça n'a pas l'air de marcher...
Et je n'ai pas trouvé non plus comment le faire avec PostGIS.
Hors ligne
#19 Fri 12 September 2008 16:05
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
QGIS détermine la projection grâce au fichier prj. Si celui n'existe pas ou n'a pas le même nom, Personne ne pourra deviner dans quelle projection sont les données.
Pour PostGIS, il faut le définir lors de l'import : shp2pgsql -s 27572 .... il est possible de modifier après coup la définition de la projection de la couche avec :
Code:
SELECT UpdateGeometrySRID('public','table','the_geom',27572);
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
#20 Fri 12 September 2008 17:19
- buzuc
- Participant occasionnel
- Date d'inscription: 27 Jan 2008
- Messages: 22
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Bien, bien...
J'ai donc transformer mes deux couches pour qu'elles aient le même SRID (WGS84).
J'ai lancé la requête
Code:
SELECT * FROM "clc53",limites WHERE contains("clc53".the_geom, "limites".the_geom) AND "clc53".the_geom && "limites".the_geom;
Et le résultat c'est que je n'ai aucun enregistrement renvoyé
Cela veut dire que je n'ai pas d'intersection entre mes deux couches ? C'est pas glop !
Hors ligne
#21 Fri 12 September 2008 18:15
Re: QGIS : Suppression ou regroupement de polygones/Valeurs
Non cela veut dire qu'aucun objet clc53 ne contient de limite communale..
Code:
SELECT * FROM "clc53",limites WHERE contains("limites".the_geom,"clc53".the_geom) AND "clc53".the_geom && "limites".the_geom;
Un retour vers la doc pourrait être un bon investissement et t'évitera ce genre de désagrément :p
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