¿Existe una herramienta en ArcGIS Pro 2.2.1 que me permita seleccionar y copiar los rásteres subyacentes sin procesar a los que hace referencia un conjunto de datos de mosaico en una carpeta?
Respuesta
¿Demasiados anuncios?No existe una solución inmediata para exportar una selección de rásters de un conjunto de datos de mosaico.
Puede utilizar Copiar Raster con su alcance del entorno ajustado a Same as Display
para exportar una única trama con la extensión de la vista actual.
No es fácil llegar a los rasters en un conjunto de datos de mosaico, puede abrir un cursor de búsqueda en uno:
with arcpy.da.SearchCursor(r'D:\Testing\KCat.gdb\KCat2','Name') as sCur:
for row in sCur:
print row[0]
Pero esto también le dará los mosaicos de la vista general; sólo se almacenan los nombres de los raster; sólo se puede acceder al nombre del raster, no a la ruta completa, tendría que saber eso de antemano para copiar los raster de base.
Nota: incluso llamando al campo 'Raster' devolviendo objetos rasterizados no puede acceder al catalogPath
o path
Incluso he intentado describir la row[0]
objeto rasterizado, las rutas no tienen sentido siendo D:\Testing\KCat.gdb\AMD_KCat2_CAT\Raster.OBJECTID = 357
(el conjunto de datos del mosaico está en D:\Testing
y llamado KCat2
).
Es posible que pueda obtener la información en ArcObjects, si es así, el objeto es IMosaicDataset
Si ya sabe dónde tiene almacenado su conjunto de datos de mosaico, puede utilizar un sencillo script de ArcMap:
import os
FocusDataFrame = arcpy.mapping.ListDataFrames(arcpy.mapping.MapDocument("Current"))[0]
arcpy.env.workspace = r'c:\path\to\your\rasters'
OutFolder = r'c:\where\you\want\to\save\to'
DataFrameExtent = FocusDataFrame.extent
for R in arcpy.ListRasters():
Ras = arcpy.Raster(R)
if Ras.extent.overlaps(XTnt):
arcpy.AddMessage('Saving {}'.format(R))
Ras.save(os.path.join(OutFolder,R))
else:
arcpy.AddMessage('Skipping {}'.format(R))
Esto hace que el extensión del marco de datos, entonces itera los rásteres en la carpeta designada, comprobando si se solapan con la extensión del marco de datos y, si hay un solapamiento, utiliza el método de guardado del Objeto rasterizado para copiar el azulejo. A partir de aquí, y basándome en tu código publicado, veo que te resultaría muy fácil modificar este sencillo proceso para adaptarlo a tus necesidades.