Pages: 1
- Sujet précédent - QGIS : Centroides de polylignes ? - conversion de lignes en points ? - Sujet suivant
#1 Mon 24 November 2014 14:12
- Sylvestris73
- Juste Inscrit !
- Date d'inscription: 24 Nov 2014
- Messages: 4
QGIS : Centroides de polylignes ? - conversion de lignes en points ?
Bonjour,
Je souhaiterais transformer une couche polylignes en points de la même façon que l'on peut créer une table avec les centroides de polygones. Car à l'échelle à laquelle je travaille ces polylignes sont trop petites. Mais je n'ai trouvé la solution nul part. Existe-t-il sous QGIS un outils qui permette de créer des "centroides" de polylignes? Toute autre alternative est également la bienvenue.
Merci d'avance de vos réponse,
Benjamin
Hors ligne
#2 Mon 24 November 2014 14:19
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3884
Re: QGIS : Centroides de polylignes ? - conversion de lignes en points ?
Bonjour,
Je préfère personnellement les alternatives à une option de création de couches juste pour de la représentation, donc vous en propose une sans modification de la géométrie.
Dans Propriétés de la couche>Style, choisir ligne de symboles puis cocher "sur le point central". Vous obtiendrez un point au centre de votre polyligne.
Hors ligne
#3 Mon 24 November 2014 16:03
- Sylvestris73
- Juste Inscrit !
- Date d'inscription: 24 Nov 2014
- Messages: 4
Re: QGIS : Centroides de polylignes ? - conversion de lignes en points ?
En fait, j'ai oublié de mentionner que ça n'est pas exclusivement dans un but de représentation que je souhaite faire cette manip, mais car j'ai deux couches distinct existantes une ponctuelle pour les stations (espèces végétales en bord de route) de moins de 10m de long et une linéaire pour les stations de plus de 10m. Je me suis aperçu que j'avais dans mes stations linéaires des stations de moins de 10 m et c'est pour homogénéiser le tout et respecter ma méthodologie que je souhaite faire cette transformation.
Merci quand même.
Hors ligne
#4 Thu 27 November 2014 16:16
- Sylvestris73
- Juste Inscrit !
- Date d'inscription: 24 Nov 2014
- Messages: 4
Re: QGIS : Centroides de polylignes ? - conversion de lignes en points ?
Pas une petite solution?
Hors ligne
#5 Fri 28 November 2014 00:57
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3884
Re: QGIS : Centroides de polylignes ? - conversion de lignes en points ?
Salut,
Si.. il y a toujours une solution! après ça peut faire appel à plus oiu moins d'huile de coude . Je n'ai pas trouvé de fonction directe, la plupart des fonctions de centroïde semble ne porter que sur les polygones mais bon... deux pistes quand même...
1/ En important la couche dans une base spatiaLite, tu dois pouvoir utiliser la fonction de création de centroide. L'extension QSpatiaLite (via le menu Extensions < Gérer/Installer des extensions) t'aidera à créer une base de données et tu verras, c'est assez facile pour en comprendre le fonctionnement. Le forum est là en cas de besoin. Le résultat de cette requête
Code:
select *, st_centroid(geometry)as geom_pt from "macoucheline"
importé ensuite dans qgis (avec geom_pt comme champ géométrique) devrait faire l'affaire. Je note par contre que pour certaines lignes, il y a un léger décalage entre point et ligne mais ça devrait globalement aller.
EDIT : "Et après observation, j'ai un doute sur le comportement de la fonction st_centroid...."
2/ Autre méthode : je pense qu'en combinant les fonctions géométriques et relationnelles de la calculatrice de champ, il doit y avoir moyen de créer de quoi générer une couche à partir de valeurs x, y mais je n'ai pas réussi si ce n'est en utilisant les extensions. Et c'est un peu plus lourd que précédemment mais les points sont bien sur les lignes. Il te faut par contre la version de QGIS 2.6 et installer les extensions QChainage et RefFunctions.
Crée un champ "id" sur ta couche ligne et calcules-y la formule $id (il va générer un numéro d'ordre pour chacun des objets de la couche, à partir de 1).
Crée également un champ "longueur" dans lequel tu calcules la longueur des entités (formule : $length). Plus d'infos sur la manipulation des données ici
Lance QChainage et exécute-la sur ta couche polyligne : rien à modifier, si ce n'est sélectionner le nom de la couche et passer en mode avancé et choisir "Divide feature into" 2 parts. Par contre, selon la taille des données, ça peut ramer voire planter. J'ai donc essayé juste sur une portion de données. Ça te crée alors une couche de points, trois points par entité linéaire : au début, au milieu et à la fin avec deux champs (fid et cng_(Meters)).
Tout le truc est maintenant de sélectionner le point du milieu.
Et c'est là qu'entre en scène RefFunctions
Sélectionne la couche de points créée et clique sur l'outil "sélection par expression" et saisis
Code:
"cng_(Meters)" =0 or "cng_(Meters)" =dbvalue('macoucheligne','longueur', 'id', "fid")
. le nombre de guillemets est à respecter!!!
Le code ci-dessus signifie qu'on sélectionne les entités dont:
- la valeur cng_(Meters) est à 0 (début de ligne)
- la valeur cng_(Meters) est égale au contenu du champ longueur de la couche macoucheligne lorsque son champ id est identique à fid. càd, les points à l'autre extrémité.
Il suffit donc après d'inverser la sélection dans la table attributaire pour ne sélectionner que les entités ni au début ni à la fin, donc les centroïdes. Clique sur la couche puis "Enregistrer sous" pour créer une nouvelle couche avec la sélection.
Bon courage...
Dernière modification par SANTANNA (Fri 28 November 2014 01:09)
Hors ligne
#6 Wed 10 December 2014 10:55
- Sylvestris73
- Juste Inscrit !
- Date d'inscription: 24 Nov 2014
- Messages: 4
Re: QGIS : Centroides de polylignes ? - conversion de lignes en points ?
Merci pour les conseils.
En fait, j'ai résolu le problème en faisan un tampon autour de mes lignes qui soit assez fin pour ne pas perdre en précision (1m). Et j'ai ensuite calculé mes centroides à partir de la couche tampon en utilisant l'extension "Real centroids" pour qu'ils restent situés dans le polygone. Ça marche nickel et c'est super rapide.
Merci encore et a plus,
Benjamin
Hors ligne
Pages: 1
- Sujet précédent - QGIS : Centroides de polylignes ? - conversion de lignes en points ? - Sujet suivant