批量转换与裁剪MODIS09GA数据工具介绍

版权申诉
0 下载量 70 浏览量 更新于2024-10-12 1 收藏 1KB RAR 举报
资源摘要信息: "test_batch_mod_裁剪_MODIS_" 本文件是关于如何使用一款名为“test_batch_mod”的程序进行MODIS(Moderate Resolution Imaging Spectroradiometer,中等分辨率成像光谱辐射计)数据的批量格式转换与裁剪操作的说明。MODIS是搭载在美国国家航空航天局(NASA)的两个地球观测卫星(Terra和Aqua)上的关键仪器,用于收集大量关于地球表面和大气的信息。 ### 知识点一:MODIS数据介绍 MODIS数据是一种由NASA提供的遥感数据,具有覆盖范围广、频率高、数据量大的特点。MODIS传感器能够获取从可见光到红外线的36个波段,其空间分辨率从250米到1000米不等。这些数据广泛应用于地球科学研究、环境监测、农业分析、灾害监测等多个领域。 ### 知识点二:批量格式转换 批量格式转换指的是将大量原始MODIS数据以自动化的方式转换成用户需要的格式。这样的操作通常需要一个预设的脚本或程序来完成,以保证转换过程的效率和准确性。格式转换对于数据处理流程是至关重要的,因为它可以将数据调整到更适合分析的格式,比如将原始的HDF格式转换为更为通用的GeoTIFF格式。 ### 知识点三:数据裁剪 数据裁剪是遥感数据分析中的一个常见步骤,其目的是从整个数据集中提取出感兴趣区域(ROI)的数据。在本例中,“test_batch_mod”程序能够对MODIS数据进行裁剪操作,以减少数据的体积和提高特定区域分析的精确性。裁剪后的数据将仅包含用户指定的地理坐标范围内影像,使得后续处理和分析工作更加高效。 ### 知识点四:使用脚本语言进行自动化操作 文件“test_batch_mod.pro”表明该操作可能涉及使用一种脚本语言,极有可能是IDL(Interactive Data Language)或其衍生版本ENVI的脚本语言。IDL是一种用于数据分析、可视化以及交叉学科计算的高性能编程语言。它特别适用于处理大量数据,适合于上述的批量格式转换与裁剪操作。 ### 知识点五:自动化脚本的实现原理 一个典型的自动化脚本可能包括以下几个部分: - 输入参数定义:脚本会指定需要输入的参数,如源MODIS数据的路径、输出格式、裁剪的地理范围等。 - 数据读取:使用脚本语言提供的库函数读取指定的MODIS数据文件。 - 格式转换:通过相应的函数或方法将数据从原始格式转换为目标格式。在此过程中,可能涉及到对数据进行编码、压缩、转换等处理。 - 裁剪操作:确定裁剪范围,使用算法提取出感兴趣的区域,并对这部分数据进行处理。 - 输出结果:将处理后的数据保存到指定的位置,同时保证数据的完整性和可用性。 ### 知识点六:批量处理的优势 批量处理对于处理大量数据具有显著优势,主要体现在以下几个方面: - 时间效率:自动化脚本可以同时处理多个数据集,显著减少单个数据处理所需的时间。 - 准确性:通过预先设定好的脚本执行操作,避免了人为操作的失误,提高了数据处理的准确性。 - 可重复性:脚本化的处理流程可以轻松保存和复现,便于对数据处理过程进行验证和修改。 - 资源管理:自动化脚本可以更加高效地利用计算资源,例如在分布式计算环境中进行大规模数据处理。 ### 知识点七:环境监测与数据分析中的应用 MODIS数据在环境监测与数据分析中有着广泛的应用,例如: - 气候变化研究:监测和分析全球气候变化趋势,如植被覆盖变化、冰川融化等。 - 农业监测:评估作物生长状况和产量预估,监测干旱、洪水等自然灾害。 - 生态保护:监测生物多样性、森林覆盖变化和濒危物种栖息地。 - 城市规划:城市热岛效应分析、城市扩张监测等。 通过掌握批量处理MODIS数据的技术,科研人员和决策者可以更好地利用遥感数据进行环境分析和科学研究,为地球系统的研究和资源管理提供强大的数据支撑。

def test_mobilenet(): # todo 加载数据, 224*224的大小 模型一次训练16张图片 train_ds, test_ds, class_names = data_load(r"C:\Users\wjx\Desktop\项目\data\flower_photos_split\train", r"C:\Users\wjx\Desktop\项目\data\flower_photos_split\test", 224, 224, 16) # todo 加载模型 model = tf.keras.models.load_model("models/mobilenet_fv.h5") # model.summary() # 测试,evaluate的输出结果是验证集的损失值和准确率 loss, accuracy = model.evaluate(test_ds) # 输出结果 print('Mobilenet test accuracy :', accuracy) test_real_labels = [] test_pre_labels = [] for test_batch_images, test_batch_labels in test_ds: test_batch_labels = test_batch_labels.numpy() test_batch_pres = model.predict(test_batch_images) # print(test_batch_pres) test_batch_labels_max = np.argmax(test_batch_labels, axis=1) test_batch_pres_max = np.argmax(test_batch_pres, axis=1) # print(test_batch_labels_max) # print(test_batch_pres_max) # 将推理对应的标签取出 for i in test_batch_labels_max: test_real_labels.append(i) for i in test_batch_pres_max: test_pre_labels.append(i) # break # print(test_real_labels) # print(test_pre_labels) class_names_length = len(class_names) heat_maps = np.zeros((class_names_length, class_names_length)) for test_real_label, test_pre_label in zip(test_real_labels, test_pre_labels): heat_maps[test_real_label][test_pre_label] = heat_maps[test_real_label][test_pre_label] + 1 print(heat_maps) heat_maps_sum = np.sum(heat_maps, axis=1).reshape(-1, 1) # print(heat_maps_sum) print() heat_maps_float = heat_maps / heat_maps_sum print(heat_maps_float) # title, x_labels, y_labels, harvest show_heatmaps(title="heatmap", x_labels=class_names, y_labels=class_names, harvest=heat_maps_float, save_name="images/heatmap_mobilenet.png")

2023-06-13 上传