[PYTHON] Betten Sie andere Bilder mit ArcPy in das Raster ein

Datenbeispiel

Ausführungsergebnis

2020-02-09-11-42-53.png

Python-Code

EmbedOtherImageToRaster.py


import arcpy
import numpy

inRasterLayer   = arcpy.GetParameterAsText(0)   #Raster (Ebene) auf der eingebetteten Seite
inOtherImage    = arcpy.GetParameterAsText(1)   #Bild zum Einbetten
outRasterData   = arcpy.GetParameterAsText(2)   #Zielraster ausgeben
inOffsetRow     = arcpy.GetParameterAsText(3)   #Einbetten von Zielkoordinaten (Zeilenrichtung)
inOffsetCol     = arcpy.GetParameterAsText(4)   #Einbetten von Zielkoordinaten (Spaltenrichtung)

baseRaster = arcpy.Raster(inRasterLayer)
baseArray = arcpy.RasterToNumPyArray(baseRaster)

otherRaster = arcpy.Raster(inOtherImage)
otherArray = arcpy.RasterToNumPyArray(otherRaster)

offsetRow = int(inOffsetRow)
offsetCol = int(inOffsetCol)

outArray = baseArray.copy()    #Ausgabezielpixelarray

#Überschreiben Sie den Pixelwert des Bildes, das in das Ausgabeziel-Pixelarray eingebettet werden soll
for band in range(0, 3):
    for row in range(0, otherArray.shape[1]):
        for col in range(0, otherArray.shape[2]):
            outArray[band, offsetRow + row, offsetCol + col] = otherArray[band, row, col]

#Speichern Sie das Pixelarray des Ausgabeziels als Raster
outRaster = arcpy.NumPyArrayToRaster(
    outArray,
    arcpy.Point(baseRaster.extent.XMin, baseRaster.extent.YMin),
    baseRaster.meanCellWidth,
    baseRaster.meanCellHeight)
arcpy.DefineProjection_management(outRaster, baseRaster.spatialReference)

compressionTypes = {
    'LZ77'  : 'LZ77',
    'JPEG'  : 'JPEG',
    'JPEG2000'  : 'JPEG2000',
    'PACKBITS'  : 'PackBits',
    'LZW'   : 'LZW',
    'RLE'   : 'RLE',
    'CCITT GROUP 3' : 'CCITT_G3',
    'CCITT GROUP 4' : 'CCITT_G4',
    'CCITT (1D)'    : 'CCITT_1D',
    'None'  : 'NONE' }
arcpy.env.compression = compressionTypes[baseRaster.compressionType]

pixelTypes = {
    'U1'    : '1_BIT',
    'U2'    : '2_BIT',
    'U4'    : '4_BIT',
    'U8'    : '8_BIT_UNSIGNED',
    'S8'    : '8_BIT_SIGNED',
    'U16'   : '16_BIT_UNSIGNED',
    'S16'   : '16_BIT_SIGNED',
    'U32'   : '32_BIT_UNSIGNED',
    'S32'   : '32_BIT_SIGNED',
    'F32'   : '32_BIT_FLOAT',
    'F64'   : '64_BIT' }
formats = {
    'BIL'   : 'BIL',
    'BIP'   : 'BIP',
    'BMP'   : 'BMP',
    'BSQ'   : 'BSQ',
    'DAT'   : 'ENVI',
    'GIF'   : 'GIF',
    'Grid'  : 'GRID',
    'IMAGINE Image' : 'IMAGINE Image',
    'JP2000'        : 'JP2',
    'JPEG'          : 'JPEG',
    'PNG'           : 'PNG',
    'TIFF'          : 'TIFF' }
arcpy.CopyRaster_management(outRaster, outRasterData,
                            pixel_type = pixelTypes[baseRaster.pixelType],
                            format = formats[baseRaster.format],
                            nodata_value = baseRaster.noDataValue)

del baseRaster, baseArray, otherRaster, otherArray, outArray, outRaster

Referenz

Referenz

Recommended Posts

Betten Sie andere Bilder mit ArcPy in das Raster ein
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
Zeichnen Sie mit ArcPy eine Figur auf dem Feature-Layer
Zeigen Sie ImageField-Bilder normalerweise mit Django + Google Cloud Strage auf dem Server an
[Python] So speichern Sie Bilder mit Beautiful Soup sofort im Web
Zeigen Sie Bilder in S3 mit API Gateway + Lambda an
Zeichentipps mit matplotlib auf der Serverseite
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Verwenden Sie mit boto3 etwas anderes als das Standardprofil