Suite

Effacer la mémoire tampon dans une autre mémoire tampon sans effacer les mémoires tampons qui se chevauchent à l'aide d'ArcGIS for Desktop ?


Je ne suis pas un pro ArcGis, j'ai donc besoin d'aide sur celui-ci, et j'ai essayé de chercher des réponses.

J'utilise ArcMap 10.2.2. Je ne sais pas utiliser python.

J'ai des zones tampons de 6 km et 12 km autour des sites qui m'intéressent. Je veux pouvoir découper la zone tampon de 6 km à partir de la zone tampon de 12 km afin d'obtenir une nouvelle couche contenant des zones tampons comprises entre 6 km et 12 km. J'ai essayé d'utiliser l'outil de découpage, mais au lieu de découper le tampon de 6 km du tampon de 12 km, il semble ne pouvoir découper que la zone de 12 km entourant le tampon de 6 km (voir photo). Les tampons sont tous dans la même couche d'ailleurs.

J'ai ensuite essayé d'utiliser l'outil d'effacement. J'ai effacé le tampon de 6 km du tampon de 12 km, ce qui fonctionne, mais partout où il y avait un chevauchement de tampon, l'outil d'effacement a découpé des zones de chevauchement et je veux que les nouveaux tampons (6-12 km) restent des beignets complets (voir photo).

Comment puis-je couper ou effacer la mémoire tampon de 6 km de la mémoire tampon de 12 km sans également supprimer le chevauchement ? Photo:


Comme vous n'avez que 2 distances tampons, vous pouvez le faire en 2 étapes manuelles simples (si vous aviez plus de distances tampons, je vous recommanderais d'utiliser le code de Polygeo).

Étape 1 : Utilisez l'outil « Buffer » pour créer une zone tampon de 6 km autour de tous vos points. Assurez-vous de définir Dissoudre sur "Aucun"

Étape 2 : utilisez l'outil "Multiple Ring Buffer" pour créer une mémoire tampon de 6 km autour des mémoires tampons que vous avez créées à l'étape 1. Assurez-vous de définir Dissolve sur "Aucun" et cochez la case "Outside Polygons Only".

Les données que vous avez créées à l'étape 2 seront les tampons affichant uniquement la plage de 6 à 12 km.


Pour ce faire, je pense que vous devrez utiliser ArcPy avec :

  • un curseur de recherche pour lire les géométries de vos points un par un
  • tamponnez chaque géométrie de point deux fois (6 km et 12 km), puis utilisez le tampon de 6 km pour effacer (en utilisant la différence) du tampon de 12 km pour créer un polygone annulaire.
  • un curseur d'insertion pour écrire une nouvelle classe d'entités surfaciques pour vos polygones annulaires.

Avec arcpy.da, même si vous avez des milliers de points, je pense que cela devrait fonctionner assez rapidement.

Je pensais que le code de preuve de concept pour le faire serait facile, alors je l'ai écrit. J'ai utilisé 30 et 60 mètres pour mes tampons de test.

import arcpy pointFC = r"C:Temp	est.gdbPointFC" annulusFC = r"C:Temp	est.gdbAnnulusFC" if arcpy.Exists(annulusFC): arcpy.Delete_management(annulusFC) arcpy.CreateFeatureclass_management( r"C:Temp	est.gdb", "AnnulusFC","POLYGON",pointFC, "DISABLED","DISABLED",pointFC) iCursor = arcpy.da.InsertCursor(annulusFC,["[email protected]"]) avec arcpy.da.SearchCursor(pointFC,["[email protected]"]) as sCursor : pour pnt dans sCursor : pntGeom = pnt[0] smallBufGeom = pntGeom.buffer(30) largeBufGeom = pntGeom.buffer(60) annulusGeom.dferenceBufGeom (smallBufGeom) iCursor.insertRow([annulusGeom]) del iCursor

Les classes d'entités en entrée et en sortie pour trois points de test sont établies comme suit :