Processing math: 100%

1 votos

Copiar rásteres brutos referenciados por un conjunto de datos de mosaico en ArcGIS Pro 2.2.1

¿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?

2voto

Flinkman Puntos 4821

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X