Python 中的自定义栅格类型实现
可根据要添加的栅格数据类型,在 Python 中自定义并实现栅格类型。栅格类型可类比为一组函数,用于识别与数据关联的元数据结构格式。 栅格类型还可以解析元数据以检索信息,例如数据文件路径、空间参考信息以及元数据(传感器名称、太阳高程、太阳方位角、日地距离、采集日期、辐射率和反射率参数)。
除了解析和读取元数据文件中的元数据信息外,栅格类型还定义了适用于所读取数据类型的处理模板。 处理模板可以组合源数据中的多维度数据,生成更具分析价值且便于可视化展示的输出。 大多数基于传感器数据的栅格类型都将多光谱定义为其处理模板之一。 根据产品可用的数据类型,还可以定义许多其他模板。 例如,Landsat 8 栅格类型定义了多种模板,如多光谱、全色、全色锐化、植被、卷云和雪/冰。
要了解有关在 Python 中实现的 ArcGIS 栅格类型的详细信息,请参阅 Github 栅格类型。
栅格类型的属性
栅格类型的构建方式,是从源数据中定义以下一个或多个属性:
波段属性 - 例如波段名称、最小和最大波长以及太阳辐照度
处理模板 - 包含输入、函数和值或变量的栅格函数模板
辅助字段 - 添加到镶嵌数据集的字段
辅助输入 - 栅格类型完整描述数据源所需的额外信息,例如应应用于源数据集以对影像进行正射校正的 DEM
自定义栅格类型实现
下面详细介绍了如何在 Python 模块中实现栅格类型。 栅格类型是一个图层,有助于在数据的各个方面与应用程序进行交互。 栅格类型也是使用添加栅格至镶嵌数据集工具向镶嵌数据集添加栅格的核心。
ArcGIS 框架通过使用众所周知的工厂模式来识别栅格类型。 栅格类型工厂包含一个栅格类型集合,该集合可以根据特定标准进行分类组织,也可以只是一个包含所有栅格类型的容器。
在 Python 中实现的栅格类型包含三个组件:
工作原理
在 Python 中实现栅格类型的架构设计直观明了。 ArcGIS 提供了一个栅格类型适配器,用于连接 ArcGIS 系统与用于栅格类型实现的 Python 模块。 该适配器加载 Python 模块并查找 RasterTypeFactory 以识别此模块中的参与栅格类型。 RasterTypeFactory 必须至少包含一个公共函数 getRasterTypesInfo,该函数返回有关工厂内所有栅格类型的信息。 getRasterTypesInfo 函数返回 RasterTypeDefinitions 的字典。 适配器随后获取有关 RasterTypes 的信息,并对基于 Python 的栅格类型与 ArcGIS 中包含的任何其他栅格类型一视同仁。 ArcGIS 框架则使用 Builder API 和 Crawler API 与基于 Python 的栅格类型进行交互。
使用 Python 实现栅格类型后,请将 Python 模块放入 [InstallDirectory]\Resources\Raster\Types 文件夹。
ArcGIS 中的栅格类型框架将从此位置拾取所有 *.py 文件,并检查其中是否包含有效的栅格类型。 如果找到有效的栅格类型,则会将其添加到添加栅格至镶嵌数据集工具的支持栅格类型列表中。
要了解有关如何在 Python 模块中实现栅格类型的详细信息,请参阅 Python 栅格类型剖析。