banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 23 February 2013 18:51

CB888
Juste Inscrit !
Date d'inscription: 23 Feb 2013
Messages: 4

QGIS 1.8 : Créer automatiquement des points le long d'une ligne

Bonjour,

J'ai posté ma question dans un autre forum, mais les solutions proposées allaient hélas au-delà de mes compétences. Je me permets donc d'essayer ici en précisant un peu plus mes objectifs.


J'ai quelques couches comportant chacune quelques centaines de lignes (représentant des faces d'ilots dans une ville). Je souhaite générer automatiquement un nombre variable de points le long de chacune de ces lignes. L'objectif est de pouvoir représenter les caractéristiques d'individus (en moyenne 8 000 par couche) en utilisant des points (un par individu). Jusqu'à maintenant, j'ai cartographié à l'échelle de la face d'ilot (ligne). Grâce aux adresses, je peux ordonner mes individus le long de la face d'îlot.

Je pourrais évidemment géoréférencer chaque point manuellement. J'y gagnerais en précision (j'ai un plan de ville sur une couche matricielle), mais ça serait assez long. D'où le projet de faire générer automatiquement les points.

J'ai pensé à diviser d'abord chaque ligne en un nombre de segments correspondants au nombre de points à générer, puis à utiliser les coordonnées de ces nouvelles lignes pour générer des points. Mais je ne sais pas comment m'y prendre concrètement.

Est-ce réaliste pour un néophyte? Quels sont les outils qui me permettraient de faire ces opérations sans que je sois contraint de recourir à la programmation en ligne de commande?

On m'a suggéré la fonction «v.segment - Creates points/segments from input vector lines and positions» de GRASS ainsi que la fonction «interpolate» du module Python Shapely. J'ai eu des messages d'erreurs en essayant d'installer Shapely (de toute façon, l'écriture de commande avec Python est probablement au-dessus de mes compétences). Et il semble bien qu'il faille connaître la distance entre les points pour utiliser la fonction de GRASS. Or, cette distance varie selon la longueur de la ligne et le nombre de points à créer (égal au nombre d'individus le long de chacune des lignes). Fournir une distance serait faisable si je pouvais importer la longueur de chacune des lignes (faces d’îlots) dans la base de données où se trouvent mes données attributaires (longueur de la face d'îlot divisé par le nombre d'individus présents). Mais je ne sais pas comment. Voilà où j'en suis.

Est-ce que quelqu'un aurait une solution? J'ai eu beau chercher, je n'ai rien trouvé dans le Forum Geolibre de GeoRezo.

Merci de votre aide!

CB

Hors ligne

 

#2 Sat 23 February 2013 22:10

CB888
Juste Inscrit !
Date d'inscription: 23 Feb 2013
Messages: 4

Re: QGIS 1.8 : Créer automatiquement des points le long d'une ligne

Je viens de trouver une solution satisfaisante que je souhaite partager avec les membres du forum.

1- On recourt d’abord à l’outil «densifier les géométries» (Vecteur/Outils de géométrie/). On choisit le nombre de nœuds supplémentaires. Dans mon cas 100 faisait amplement l'affaire. On enregistre dans un nouveau Shapefile.
2- On utilise ensuite l'outil «d'extraction de nœuds» (Vecteur/Outils de géométrie/) pour produire une nouvelle couche de points.
3- J'ajoute des colonnes X et Y avec la calculatrice de fonction (ouvrir la table attributaire, fonctions de Géométrie «$X» et «$Y» en prenant soin de choisir un nombre décimal avec la plus grande précision).
4- J'importe le fichier DBF (partie du Shapefile) dans ma base de données.
5- J'exporte ensuite mes points (avec les variables à cartographier) vers Qgis (ajout d'une couche avec fichier texte délimité).

Contrairement à mon projet initial, le nombre de nœuds d'abord créé n'est pas variable. Par contre, je ne retourne vers Qgis que les points nécessaires. J'envisage même d'utiliser les points dans ma base de données de manière à répartir mes individus également sur la face d'îlot (n'utiliser que 10 points également répartis s'il n'y a que 10 individus présents sur une face d'îlot).

en espérant que ça soit utile un jour à l'un ou l'autre d'entre vous,
CB

Hors ligne

 

Pied de page des forums

Powered by FluxBB