def setMDProperties(self, mdPath): args = [] mdName = os.path.basename(mdPath).upper() args.append(mdPath) args.append(self.getInternalPropValue(mdName, 'rows_maximum_imagesize')) args.append(self.getInternalPropValue(mdName, 'columns_maximum_imagesize')) args.append(self.getInternalPropValue(mdName, 'allowed_compressions')) args.append(self.getInternalPropValue(mdName, 'default_compression_type')) args.append(self.getInternalPropValue(mdName, 'JPEG_quality')) args.append(self.getInternalPropValue(mdName, 'LERC_Tolerance')) args.append(self.getInternalPropValue(mdName, 'resampling_type')) args.append(self.getInternalPropValue(mdName, 'clip_to_footprints')) args.append(self.getInternalPropValue(mdName, 'footprints_may_contain_nodata')) args.append(self.getInternalPropValue(mdName, 'clip_to_boundary')) args.append(self.getInternalPropValue(mdName, 'color_correction')) args.append(self.getInternalPropValue(mdName, 'allowed_mensuration_capabilities')) args.append(self.getInternalPropValue(mdName, 'default_mensuration_capabilities')) args.append(self.getInternalPropValue(mdName, 'allowed_mosaic_methods')) args.append(self.getInternalPropValue(mdName, 'default_mosaic_method')) args.append(self.getInternalPropValue(mdName, 'order_field')) args.append(self.getInternalPropValue(mdName, 'order_base')) args.append(self.getInternalPropValue(mdName, 'sorting_order')) args.append(self.getInternalPropValue(mdName, 'mosaic_operator')) args.append(self.getInternalPropValue(mdName, 'blend_width')) args.append(self.getInternalPropValue(mdName, 'view_point_x')) args.append(self.getInternalPropValue(mdName, 'view_point_y')) args.append(self.getInternalPropValue(mdName, 'max_num_per_mosaic')) args.append(self.getInternalPropValue(mdName, 'cell_size_tolerance')) args.append(self.getInternalPropValue(mdName, 'cell_size')) args.append(self.getInternalPropValue(mdName, 'metadata_level')) args.append(self.getInternalPropValue(mdName, 'transmission_fields')) args.append(self.getInternalPropValue(mdName, 'use_time')) args.append(self.getInternalPropValue(mdName, 'start_time_field')) args.append(self.getInternalPropValue(mdName, 'end_time_field')) args.append(self.getInternalPropValue(mdName, 'time_format')) args.append(self.getInternalPropValue(mdName, 'geographic_transform')) args.append(self.getInternalPropValue(mdName, 'max_num_of_download_items')) args.append(self.getInternalPropValue(mdName, 'max_num_of_records_returned')) args.append(self.getInternalPropValue(mdName, 'data_source_type')) args.append(self.getInternalPropValue(mdName, 'minimum_pixel_contribution')) args.append(self.getInternalPropValue(mdName, 'processing_templates')) args.append(self.getInternalPropValue(mdName, 'default_processing_template')) args.append(self.getInternalPropValue(mdName, 'time_interval')) args.append(self.getInternalPropValue(mdName, 'time_interval_units')) setProperties = Base.DynaInvoke('arcpy.SetMosaicDatasetProperties_management', args, self.__setpropertiesCallback, self._message) if (setProperties.init() == False): return False return setProperties.invoke()
def AddRasters(self): self.log("Adding rasters:", self.const_general_text) ArcGISVersion = self.m_base.getDesktopVersion() enabledARTEdit = True if (len(ArcGISVersion) >= 2): # no editing of (ART) if ArcGIS version is >= 10.4 if (ArcGISVersion[0] >= 10 and ArcGISVersion[1] >= 4): enabledARTEdit = False for sourceID in self.sMdNameList: MDName = self.sMdNameList[sourceID]['md'] fullPath = os.path.join(self.m_base.m_geoPath, MDName) if (arcpy.Exists(fullPath) == False): self.log("Path doesn't exist: %s" % (fullPath), self.const_critical_text) return False self.m_base.m_last_AT_ObjectID = self.getLastObjectID(self.m_base.m_geoPath, MDName) for hshAddRaster in self.sMdNameList[sourceID]['addraster']: try: self.log("\tUsing mosaic dataset/ID:" + MDName + '/' + hshAddRaster['dataset_id'], self.const_general_text) rasterType = 'Raster Dataset' name_toupper = MDName.upper() if ('art' in hshAddRaster.keys()): rasterType = hshAddRaster['art'] self.log("\tUsing ART for " + name_toupper + ': ' + rasterType, self.const_general_text) if (self.m_base.m_art_apply_changes == True and enabledARTEdit): art_doc = minidom.parse(rasterType) if (self.m_base.updateART(art_doc, self.m_base.m_art_ws, self.m_base.m_art_ds) == True): self.log("\tUpdating ART (Workspace, RasterDataset) values with (%s, %s) respectively." % (self.m_base.m_art_ws, self.m_base.m_art_ds), self.const_general_text) c = open(rasterType, "w") c.write(art_doc.toxml()) c.close() set_filter = '' if ('filter' in hshAddRaster.keys()): set_filter = hshAddRaster['filter'] if (set_filter == '*'): set_filter = '' # HK: to hard-code set_filter to exclude RGB: '*_V*.tif' set_spatial_reference = '' if ('spatial_reference' in hshAddRaster.keys()): set_spatial_reference = hshAddRaster['spatial_reference'] objID = self.getLastObjectID(self.m_base.m_geoPath, MDName) self.sMdNameList[sourceID]['pre_AddRasters_record_count'] = objID self.sMdNameList[sourceID]['Dataset_ID'] = hshAddRaster['dataset_id'] self.log('Adding items..') args = [] args.append(fullPath) args.append(rasterType) args.append(self.GetValue(hshAddRaster, 'data_path')) args.append(self.GetValue(hshAddRaster, 'update_cellsize_ranges')) args.append(self.GetValue(hshAddRaster, 'update_boundary')) args.append(self.GetValue(hshAddRaster, 'update_overviews')) args.append(self.GetValue(hshAddRaster, 'maximum_pyramid_levels')) args.append(self.GetValue(hshAddRaster, 'maximum_cell_size')) args.append(self.GetValue(hshAddRaster, 'minimum_dimension')) args.append(self.GetValue(hshAddRaster, 'spatial_reference')) args.append(set_filter) args.append(self.GetValue(hshAddRaster, 'sub_folder')) args.append(self.GetValue(hshAddRaster, 'duplicate_items_action')) args.append(self.GetValue(hshAddRaster, 'build_pyramids')) args.append(self.GetValue(hshAddRaster, 'calculate_statistics')) args.append(self.GetValue(hshAddRaster, 'build_thumbnails')) args.append(self.GetValue(hshAddRaster, 'operation_description')) args.append(self.GetValue(hshAddRaster, 'force_spatial_reference')) args.append(self.GetValue(hshAddRaster, 'estimate_statistics')) args.append(self.GetValue(hshAddRaster, 'aux_inputs')) args.append(self.GetValue(hshAddRaster, 'enable_pixel_cache')) args.append(self.GetValue(hshAddRaster, 'cache_location')) if (self.m_base.m_art_apply_changes and not enabledARTEdit): args[len(args) - 1] += ';DEM {}'.format(os.path.join(self.m_base.m_art_ws, self.m_base.m_art_ds)) AddRaster = Base.DynaInvoke('arcpy.AddRastersToMosaicDataset_management', args, None, self.m_base.m_log.Message) if (AddRaster.init() == False): return False AddRaster.invoke() newObjID = self.getLastObjectID(self.m_base.m_geoPath, MDName) if (newObjID <= objID): self.log('No new mosaic dataset item was added for Dataset ID (%s)' % (hshAddRaster['dataset_id'])) continue for callback_fn in self.callback_functions: if (callback_fn(self.m_base.m_geoPath, sourceID, self.sMdNameList[sourceID]) == False): return False except Exception as e: self.log(str(e), self.const_warning_text) self.log(arcpy.GetMessages(), self.const_warning_text) Warning = True newObjID = self.getLastObjectID(self.m_base.m_geoPath, MDName) if (newObjID <= self.m_base.m_last_AT_ObjectID): self.log('No new mosaic dataset items added to dataset (%s). Verify the input data path/raster type is correct' % (MDName), self.const_critical_text) self.log(arcpy.GetMessages(), self.const_critical_text) return False return True