Est-ce que Clip (Gestion des données) ou Extraire par masque (Spatial Analyst) est plus efficace?

12

J'essaie de couper une orthophoto à la limite d'un comté. J'utilise l'outil Extraire par masque, mais ce processus fonctionne depuis environ 12 heures! Il a déjà traversé 2 cycles, donc je suppose que c'est chaque groupe. Quelqu'un peut-il me corriger si je me trompe à ce sujet.

Le clip dans la gestion des données fonctionnerait-il mieux (plus rapidement)? Quelle serait la précision?

J'ai toujours essayé d'utiliser Extract By Mask, mais cela prend trop de temps.

user26133
la source
J'ai toujours découpé plutôt que extrait par masque pour découper un raster sur le contour d'un polygone, et c'est assez rapide (minutes, pas heures). Pouvez-vous préciser ce que vous entendez par «exactitude» du résultat?
Erica
J'ai utilisé l'outil Clip dans la gestion des données une fois, mais c'était un raster de précipitations qui devait être utilisé sur une zone beaucoup plus grande avec laquelle je travaillais. C'était pour un devoir scolaire, et ils ont mentionné que ça ne se passerait pas bien.
user26133
À ma connaissance, le clip ne modifie pas le contenu de la valeur raster (pas plus que l'extraction par masque), ils peuvent donc simplement faire référence aux valeurs d'analyse étant inexactes en raison de la plus petite zone spatiale analysée, plutôt que du clip processus affectant les données. Ce ne serait pas un problème pour une orthophoto, sauf si vous l'utilisez pour l'analyse plutôt que pour l'arrière-plan.
Erica
2
Le découpage ne fait qu'une zone rectangulaire (enveloppe), mais l'extraction par masque sera extraite en un polygone irrégulier / en plusieurs parties / en anneau. Si vous ne voulez que les données d'un clip d'utilisation d'étendue, c'est beaucoup plus rapide, mais si vous avez besoin de rogner à une forme irrégulière, utilisez l'extraction par masque.
Michael Stimson
4
En fait, le clip peut aussi avoir des formes irrégulières. Si vous sélectionnez les polygones dans le fichier shp dans lesquels vous souhaitez découper le raster, puis cochez la case "Utiliser les entités en entrée pour découper la géométrie", vous obtenez la forme du polygone, et non l'étendue rectangulaire de l'ensemble du fichier shp.
ecologist1234

Réponses:

19

J'ai effectué un test pour déterminer en quoi la vitesse et la qualité diffèrent entre les deux méthodes, voici les résultats:

Des données d'entrée

  1. Image NAIP DOQQ 4 bandes au format .img (349,34 Mo)
  2. Une classe d'entités utilisée comme masque / tondeuse

entrez la description de l'image ici

Performance

Trois essais ont été réalisés et comparés. La méthode Clip (Data Management) est nettement plus rapide que la méthode Extract by Mask (Spatial Analyst).

entrez la description de l'image ici

Qualité

Les deux étendues étaient identiques, tout comme les valeurs NoData. Cependant, une évaluation visuelle a montré que la méthode d'extrait par masque modifiait légèrement la disposition des pixels - probablement le résultat d'un certain type de rééchantillonnage. La disposition des pixels dans l'opération de clip était identique à l'image d'entrée d'origine.


# Import system modules
import arcpy, time, os
from arcpy import env
from arcpy.sa import *

env.overwriteOutput = 1

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set local variables
inRaster = r'C:\temp\naip2011.img'
inMaskData = r'C:\temp\fgdb.gdb\clipper'
outws = r'C:\temp'
out1 = os.path.join(outws, 'extractbymask.img')
out2 = os.path.join(outws, 'clip.img')

#############TRIAL 1: EXTRACT BY MASK#########################################
start = time.clock()

# ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)

# Save the output
outExtractByMask.save(out1)

end = time.clock()
total = end - start

print "The extract by mask method took:  %s seconds" % round(total, 3)

###############TRIAL 2: CLIP#################################################
start = time.clock()

# Clip
arcpy.Clip_management(inRaster, "#", out2, inMaskData, "", "ClippingGeometry")

end = time.clock()
total = end - start

print "The clip method took:             %s seconds" % round(total, 3)
Aaron
la source
1
Très bonne réponse! Je ne prétends pas être un statisticien expert, mais je tripotais dans minitab, j'ai donc soumis vos synchronisations à un test t à 2 échantillons et je sais que la taille de l'échantillon est un peu petite, mais c'était une différence significative. ;)
Hornbydd
3
Si la méthode d'extraction par masque a modifié l'original de quelque manière que ce soit, comme vous le signalez, cela n'a probablement pas été effectué avec un masque approprié: c'est-à-dire, qui était exactement aligné avec le raster d'origine. Cela aurait forcé l'original à être rééchantillonné, ce qui représenterait la charge de calcul supplémentaire - mais suggère également que vos comparaisons temporelles ne constituent pas une évaluation juste de la situation. En effet, la procédure de découpage commence très probablement par la création d'un masque, puis son application, de sorte que l'on peut s'attendre à ce que le découpage soit un peu moins efficace qu'une extraction par masque seul.
whuber
1
J'espère que vous ne conserverez pas votre contribution définitivement supprimée, Aaron: elle contient des informations utiles. Idéalement, si vous pouviez le mettre à jour pour inclure le timing d'un masque enregistré avec précision, ce serait une réponse exemplaire. (Qui sait, ce résultat pourrait aussi réfuter mes spéculations!)
whuber