IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

clip polygone par rectangle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ngénieur d'etat en science géodésique et travaux topographique
    Inscrit en
    Septembre 2016
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : ngénieur d'etat en science géodésique et travaux topographique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2016
    Messages : 152
    Par défaut clip polygone par rectangle
    j'ai obtenu un bon résultat lorsque j'exécute ce code dans le cas de coupe une ficher shapefile.shp de type LIGNE par rectangle (xmin, ymin, xmax, ymax) mais je n'ai trouvé aucun résultat dans le cas où le type de shapefile.shp est zone fermé POLYGONE
    pour cela veuillez m'aide pour rectifier ce code ou un autre code pour résoudre le problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import shapefile
    # Create a reader instance for our US Roads shapefile
     
    # Create a writer instance copying the reader's shapefile type
    save = "clip"
    r  = shapefile.Reader("Myfile.shp")
    w = shapefile.Writer(save, r.shapeType)
     
    # Copy the database fields to the writer
    w.fields = list(r.fields)
     
    # Our selection box that contains Puerto Rico
    #personal definition of coordinates (top left and bottom right coords)
     
    xmin = -67.5
    xmax = -65.0
    ymin = 17.8
    ymax = 18.6
     
    # Iterate through the shapes and attributes at the same time
    for road in r.iterShapeRecords():
        # Shape geometry
        geom = road.shape
        # Database attributes
        rec = road.record
        # Get the bounding box of the shape (a single road)
        sxmin, symin, sxmax, symax = geom.bbox
        # Compare it to our Puerto Rico bounding box.
        # go to the next road as soon as a coordinate is outside the box
        if sxmin < xmin:
            continue
        elif sxmax > xmax:
            continue
        elif symin < ymin:
            continue
        elif symax > ymax:
            continue
        # Road is inside our selection box.
        # Add it to the new shapefile
     
        w.shape(geom)
        w.record(*rec)

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    nb: je ne reviens pas sur le détail du code et la façon d'organiser les choses...

    Rien n'empêche ton code de fonctionner correctement sur un shapefile de type polygone. Si, à l'exécution, le shapefile créé (clip.shp, .shx et .dbf) est vide, c'est qu'aucun polygone en entrée n'est à l'intérieur de la bounding box que tu as définie.

    Sur les copies d'écran, les polygones en entrée sont en violet. Une fois ton code exécuté, le polygone à l'intérieur de la bounding box (adapté ici à mes objets) est bien conservé dans le shapefile résultat (en rouge)

    Nom : Capture d’écran 2021-11-16 à 05.48.15.png
Affichages : 75
Taille : 129,2 Ko
    Nom : Capture d’écran 2021-11-16 à 05.49.15.png
Affichages : 75
Taille : 125,8 Ko

  3. #3
    Membre confirmé
    Homme Profil pro
    ngénieur d'etat en science géodésique et travaux topographique
    Inscrit en
    Septembre 2016
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : ngénieur d'etat en science géodésique et travaux topographique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2016
    Messages : 152
    Par défaut
    Bonjour

    Merci plxpy de m'aider

    Citation Envoyé par plxpy Voir le message
    Rien n'empêche ton code de fonctionner correctement sur un shapefile de type polygone. Si, à l'exécution, le shapefile créé (clip.shp, .shx et .dbf) est vide, c'est qu'aucun polygone en entrée n'est à l'intérieur de la bounding box que tu as définie.
    j'ai testé mon code plusieurs fois sur des zones dans lequel le polygone coupeur est bien chevauché avec le shapefile qui être coupé mais le resultat elle est toujours un fichier .shp vide

    -- vous pouvez partager avec moi les fichiers .shp qui vous avez utilisé dans le test de code ?
    -- quel est le format des coordonnées a utilisé dans votre fichiers .shp (UTM / Latitude-Longitude) ?

  4. #4
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Citation Envoyé par rabeh.ram Voir le message
    j'ai testé mon code plusieurs fois sur des zones dans lequel le polygone coupeur est bien chevauché avec le shapefile qui être coupé mais le resultat elle est toujours un fichier .shp vide
    Ton code ne retient que les objets dont le rectangle englobant (bounding box) est complètement à l'intérieur de ta zone rectangulaire (autre bounding box) définie par (xmin, ymin, xmax, ymax) aux lignes 15 à 18.

    Si ce n'est pas ce que tu cherches à faire ... Exécuter ton script sur tout un tas de shapefiles en entrée n'y changera rien : il continuera à faire la même chose.

    Pour des sélections d'objets un peu plus pointues, je te conseille d'utiliser des packages comme Shapely.

Discussions similaires

  1. vitesse d'un clip contrôlé par un curseur
    Par topkarting dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 05/10/2009, 21h15
  2. Sélection par rectangle ajustable à la souris
    Par reram dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/08/2008, 21h03
  3. Comment cliquer sur des clips générés par actionscript
    Par ar vuzhugenn dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/01/2008, 11h02
  4. clip image par image en flash
    Par patrickdu26 dans le forum Flash
    Réponses: 3
    Dernier message: 07/12/2007, 20h36
  5. Mapper des polygones par sélection de couleur
    Par SpaceFrog dans le forum Imagerie
    Réponses: 17
    Dernier message: 14/10/2007, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo