Suite

Créer une grille de polygones avec un espacement irrégulier entre les parcelles de recherche ?


J'ai une orthomosaïque d'un champ de culture avec de petites parcelles de recherche (3,8 X 1,44 m et 0,22 m de parcelles n/b et espacement de plage de 0,50 m n/b).

Je voudrais créer une couche de polygones en utilisant ces informations. Après trois portées et dix colonnes, il y a respectivement des alliés de 1,0 m et 1,30 m de large.

J'ai essayé d'utiliser le module 'pyshp' en python en suivant cette réponse à Créer un fichier de formes de polygones à grille carrée avec Python ?, mais cela n'a pas beaucoup aidé.

Je me demandais donc s'il existait un outil disponible qui me permettrait de créer des couches de polygones plus efficacement ?

Avez-vous des suggestions sur la meilleure façon de faire en Python, ArcGIS for Desktop ou QGIS ?

Edit : Voici l'image raster du champ. J'ai donc essayé la méthode de copier-coller de couche, mais la table attributaire avait un FID partout, c'est-à-dire sans séquence appropriée. La seule façon d'attribuer l'identifiant du tracé à chaque polygone est de mettre en surbrillance chaque polygone dans la table attributaire et d'entrer l'identifiant manuellement. Comme MappaGnosis l'a suggéré, j'aimerais essayer les scripts python.


Pour être honnête, un script python (si vous êtes familier avec Python) serait la méthode la plus efficace pour créer vos polygones dans votre cas d'utilisation. Cependant, si vous n'êtes pas familiarisé avec les scripts, il existe une variété d'outils que vous devriez étudier dans QGIS (par ex.Vecteur->Outils de recherche->Grille vectorielle). Vous devrez utiliser une combinaison folle de ceux-ci pour obtenir votre résultat (probablement quelque chose du genre à créer un vecteur le long des lignes médianes de vos alliés, puis à superposer successivement d'autres grilles… mais cela devient très vite désagréable à cause de vos alliés et de vos espaces ).

Donc, si la programmation est hors de question et que des heures à expérimenter avec des outils inconnus ne sont pas attrayantes, je vous suggère de penser latéralement (même si cela nécessitera toujours une formule assez lourde) ! Je suppose que vous connaissez Excel. Vous pouvez configurer une feuille de calcul pour imiter votre domaine de recherche. Chaque cellule aura une valeur séparée par des virgules le long des lignes suivantes :1-1,234156,654789où la première valeur « 1-1 » est un identifiant de tracé et la deuxième paire de valeurs sont les coordonnées x et y du coin du tracé. Chaque tracé aura quatre cellules Excel et vous utiliserez une formule répétitive simple pour calculer les décalages. Vous remplissez ensuite automatiquement votre feuille de calcul, exportez vers un fichier CSV mais utilisez des espaces comme délimiteur entre les cellules. Ensuite, utilisez MSWord ou similaire pour modifier globalement les espaces en retours chariot et ajoutez une ligne d'en-tête "id,x,y". Maintenant, importez-le en tant que fichier délimité par du texte dans QGIS et cela vous donnera un tableau de points. Ensuite, utilisez le plugin Points2One pour générer des polygones en fonction de votre identifiant de tracé.

Je configurerais Excel de cette façon:
Entrez les coordonnées de votre premier coin avec l'identifiant1-1. Maintenant, vous avez besoin d'une formule. Chaque point suivant sera un décalage par rapport au premier coin. Vos espaces de tracé et vos alliés sont identifiés en testant la valeur de ROW() et COLUMN() à l'aide de règles :

  1. S'il est pair, votre coordonnée est égale à la coordonnée précédente plus la largeur/hauteur du tracé. S'il est impair, compensé par l'espacement des tracés. Utilisez-le pour savoir également s'il faut incrémenter votre identifiant de tracé, car chaque groupe de quatre cellules doit avoir le même identifiant.
  2. Testez ROW () et COLUMN () en utilisant MOD pour vos plages (vous ne dites pas combien de tracés représente une plage). N'oubliez pas d'autoriser deux colonnes dans la direction X et deux rangées dans la direction Y pour chaque tracé (une cellule par coin de tracé - rappelez-vous !).
  3. Utilisez MOD pour tester les multiples de 3 et 10 portées à compenser par la largeur de l'allié.

De cette façon, vous construirez une (grande) formule à l'aide d'une instruction IF() imbriquée. Il commencera par concaténer COLUMN() '_' ROW() en tant que chaîne et ajoutera (via une instruction IF() pour X et une autre instruction IF() pour Y) les coordonnées afin que chaque cellule contienneidentifiant,x,y. Ensuite, exportez et convertissez en polygones comme décrit ci-dessus.

Personnellement… j'écrirais un script Python, mais si vous connaissez Excel, cela fonctionnera.


Après avoir vu l'image raster du champ, j'ai pensé à ce processus - j'ai utilisé Arcgis 10.2.1. (Remarque: je viens de me rendre compte que j'ai la longueur et les largeurs dans le mauvais sens par rapport à l'image, mais si je devais recréer la réponse, j'utiliserais le même processus ci-dessous mais modifierais les longueurs et les largeurs)

  • En utilisant les dimensions fournies, j'ai calculé les longueurs et l'espacement de mes lignes.

L'espacement des lignes comprenait une distance tampon à intégrer pour les voies alliées et l'espacement entre les parcelles. Par exemple, une largeur de parcelle de 3,8 m aurait 0,5 m ajouté à sa largeur (0,25 m pour chaque côté de la ligne) donnant un total de 4,3 m.

Les colonnes à chaque extrémité auront des dimensions similaires car elles accueillent des allées alliées de 1,3 m, tandis que les rangées en haut et en bas accueillent des allées alliées de 1 m

L'étape suivante était la mise en mémoire tampon. J'ai créé un nouveau champ dans ma table attributaire appelé buffer et j'ai entré la distance de buffer requise (si j'avais besoin d'une zone de buffer/zone de 1 m, je ferais la moitié de cette distance et saisirais cette valeur, par exemple 0,5 m)

Une fois la mise en mémoire tampon terminée, j'ai un fichier de formes (voir polygone vert ci-dessous) montrant toutes les allées et les couloirs d'espacement autour et entre les parcelles.

L'étape suivante consiste à créer un nouveau polygone couvrant toute ma zone (voir polygone bleu ci-dessous)

À partir de là, j'ai utilisé l'outil Effacer pour supprimer ces zones d'allée et les couloirs d'espacement de mon nouveau polygone. Le résultat final est une couverture polygonale de 10 x 3 parcelles.

Si vous souhaitez faire plus de tracés, vous pouvez assembler plusieurs copies du fichier de forme de ligne d'origine, puis procéder au traitement de la mise en mémoire tampon et de l'effacement. Ci-dessous montre plusieurs parcelles.


Voir la vidéo: Transformez une photo en un collage dhexagones dans Photoshop modèle gratuit (Octobre 2021).