Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 7 sur 7
  1. #1

    Par défaut Non Résolu : [QGIS 1.x] Identification vertex

    bonjour jai une petite problème je veux identifier les points d'intersection pour réaliser la segmentation au point vertex seulement jai definie une méthode pour la réaliser mais mon probleme reste identification des point pour la donner comme entrée merciii et voila la code :::

    Code:
    qgis.utils.iface
    def lect():
         #qgis.utils.iface.addVectorLayer(file, "fichSHP", "ogr")
         canvas = qgis.utils.iface.mapCanvas()
         aLayer = canvas.currentLayer()
         print(aLayer.name())
         return aLayer
    def Points():
         aLayer=lect()
         provider = aLayer.dataProvider()
         feat = QgsFeature()
         allattr=provider.attributeIndexes()
         provider.select(allattr)
         i=0
         print("le line a un type 1",QGis.Line)
         print("nombre de ligne =",provider.featureCount())
         print("nobre de champs",provider.fieldCount())
         while provider.nextFeature(feat):
            geom=feat.geometry()
            x=geom.asPolyline()
            print("la route d'id ",i)
            print("le type de la geometrie",geom.type())
            print("***************************************************************************************************")
            print("les pts constitue  la route",x)
            i=i+1
    def eclate_arc(arc,indice):
         list1=[]
         list2=[]
         i=0
         while i < len(arc) :
           x=arc[i]
           list2.append(x)
           if i==indice-1 :
             list1=list2
             list2=[]
           i=i+1
         print(i)
         print("la liste originale est",arc)
         print(" 1ere et 2eme  list ",list1)
         print("la 2eme liste",list2)
    Dernière modification par Lud ; 09/04/2012 à 19h32.

  2. #2
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 192

    Par défaut

    Je ne comprends pas ce que vous voulez faire

    1. ce sont des lignes
    2. que vous voulez découper suivant des points que vous spécifiez ?

    Il y a beaucoup plus simple comme traitement que ceux qui sont indiqués dans les tutoriels de PyQgis (vous êtes sur de ne pas faire d'erreurs
    La fonction suivante permet de tout sélectionner dans une couche (géométrie et attributs)
    Code:
    >>> def select_tout(couche):
     ...      couche.select([])
     ...      couche.setSelectedFeatures([obj.id() for obj in couche])
    ensuite

    Code:
     >>> macouche = qgis.utils.iface.activeLayer()
     >>> select_tout(macouche)
    fait le reste, tout est dans macouche (géométries et attributs)
    Si vous voulez le nom et autres choses
    Code:
    >>>macouche.name()
     PyQt4.QtCore.QString(u'testligne')
    ensuite dans Python il vaut mieux travailler avec des boucles plutôt qu'avec la manière indiquée dans les tutoriels et celle que vous utilisez:
    Code:
     >>> for elem in macouche.selectedFeatures():
     ...       geom = elem.geometry()
     ...       wkt = geom.exportToWkt()
     ...       print wkt
     LINESTRING(116935.350012 115500.583375, 117960.618676 115652.475029, 119201.067183 116184.095818, 119947.867814 116639.770780, 120897.190651 117399.229049, 121947.774591 117981.480389, 122821.151601 118411.840075, 123808.447352 118930.803226, 124226.149400 119095.352518, 124859.031291 119250.419917, 125504.570820 119393.903375, 126122.693025 119381.291081, 126746.093024 119250.510605, 127210.875871 119267.479180, 127480.348645 119110.153903, 127755.069429 118784.225242, 127693.191033 118512.405932, 127397.984044 117940.377074, 126837.736203 117219.874727, 126864.632198 116890.211110, 127285.349964 116676.704033, 127920.077596 116613.336464, 128366.270666 116608.104013, 128694.295553 116639.770780, 130466.364848 116576.482590) etc.
    etc.
    ou avec ce que vous voulez faire:
    Code:
    >>> for elem in macouche.selectedFeatures():
     ...       geom= elem.geometry()
     ...       x=geom.asPolyline()
     ...       print x  
    [(116935,115501), (117961,115652), (119201,116184), (119948,116640), (120897,117399), (121948,117981), (122821,118412), (123808,118931), (124226,119095), (124859,119250), (125505,119394), (126123,119381), (126746,119251), (127211,119267), (127480,119110), (127755,118784), (127693,118512), (127398,117940), (126838,117220), (126865,116890), (127285,116677), (127920,116613), (128366,116608), (128694,116640), (130466,116576)], etc.
    si vous voulez absolument votre indice i, il faut alors utiliser:
    Code:
     >>> for i, elem in enumerate(macouche.selectedFeatures()):
     ...       geom= elem.geometry()
     ...       x=geom.asPolyline()
     ...       print "indice: ", i, x
     ... 
     indice: 0 [(116935,115501), (117961,115652), (119201,116184), etc.
    Pour les attributs, c'est la même chose
    Code:
    >>> for att in macouche.selectedFeatures():
     ...      attrs = att.attributeMap()
     ...      for (k,atr) in attrs.iteritems():
     ...          print "%d: %s" % (k, atr.toString())
    0, -100, test
    1, -200, test2
    etc.
    en résumé:
    Code:
    def select_tout(couche):
         couche.select([])
         couche.setSelectedFeatures([obj.id() for obj in couche])
    macouche = qgis.utils.iface.activeLayer()
    select_tout(macouche)
    
    for elem in macouche.selectedFeatures():
               geom= elem.geometry()
               attrs = elem.attributeMap()
              (traitements)
    effectue tout votre traitement en une seule boucle simple, hormis eclate_arc(arc,indice) où je ne pige pas ce que vous voulez faire
    Dernière modification par gene ; 10/04/2012 à 16h32.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  3. #3

    Par défaut

    merci mais j'ai besoin d'extraire les points vertex pour faire la segmentation é après determiner le plu court chemin
    Dernière modification par david12312 ; 12/04/2012 à 02h04.

  4. #4

    Date d'inscription
    avril 2012
    Messages
    3

    Par défaut

    bjr,j'ai besoin des point vertex (intersection des ligne) pour segmenter les lignes,comment peut extraire ces points à partir de console python sous QGIS pour passer à la méthode eclate_arc l'arc et l'indice du point.

  5. #5
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 192

    Par défaut

    désolé, mais vous ne pouvez pas extraire les intersections avec PyQGIS mais vous devez utiliser un module comme Shapely: voir
    http://www.forumsig.org/showthread.php?t=33857

    Pourquoi ne pas utiliser l'extension pgrouting qui est faite pour ça ?
    http://www.portailsig.org/content/os...-openstreetmap
    Dernière modification par gene ; 12/04/2012 à 12h53.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  6. #6

    Date d'inscription
    avril 2012
    Messages
    3

    Par défaut

    merci

  7. #7

    Par défaut

    merci bcp

 

 

Discussions similaires

  1. [ArcGIS 10.x] Transformer une polyligne ou un polygone en une courbe (sans vertex)
    Par michelina dans le forum Assistance Technique
    Réponses: 5
    Dernier message: 20/03/2013, 19h49
  2. [ArcGIS 10.x] Problème de fenêtre d’identification
    Par yosri dans le forum Programmation
    Réponses: 0
    Dernier message: 13/04/2012, 09h33
  3. [ArcGIS 9.x] Fusionner par attributs, multipart dont les différentes parties ont un vertex commun
    Par Carlito dans le forum Assistance Technique
    Réponses: 2
    Dernier message: 23/03/2011, 08h23
  4. [QGIS 1.x] Problème d'identification de géométrie
    Par xavynfive dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 06/08/2010, 11h33
  5. [ArcGIS 9.x] Extraire les coordonnées XY des vertex d'une polyligne
    Par legarzic dans le forum Assistance Technique
    Réponses: 4
    Dernier message: 14/10/2009, 09h25

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •