1、地理国情监测云平台 ArcGIS教程:模糊叠加和加权叠加 一、模糊叠加 摘要 基于所选叠加类型组合模糊分类栅格数据。 用法 · 建议您在使用模糊分类工具的所得结果时使用此工具。它可以专门应用于值范围介于 0 到 1 之间的栅格。 · 下面列出了适合在某些情况下使用的叠加类型。 1. 当任何输入证据栅格都可以具有较高值以使输出值较高时使用 OR。 2. 当所有输入证据栅格都必须具有较高值以使输出值较高时使用 AND。 3. 当组合证据栅格的重要性低于单个证据栅格时使用 PRODUCT。 4. 当组合证据栅格的重要性高于任何单个证据栅格时使用 SUM。 · 叠加
2、类型 GAMMA 通常用于执行较基本数据的模糊组合。当 amma 为 1 时,结果与 Fuzzy Sum 相同。当 amma 为 0时,结果与 Fuzzy Product 相同。介于二者之间的值允许用户组合这两个极值之间的证据栅格,结果可能不同于 Fuzzy And 或 Fuzzy Or。 语法 FuzzyOverlay (in_rasters, {overlay_type}, {gamma}) 参数 说明 数据类型 in_rasters [in_raster,...] 要在叠加中进行组合的输入分类栅格列表。 Raster Layer overlay_type (
3、可选) 指定在组合两个或多个分类数据时所使用的方法。 · AND —输入模糊栅格中模糊分类栅格的最小值。 · OR —输入栅格中模糊分类栅格的最大值。 · PRODUCT — 递减函数。当多个证据栅格的组合的重要性或该组合小于任何单个输入栅格时使用此函数。 · SUM —递增函数。当多个证据栅格的组合的重要性或该组合大于任何单个输入栅格时使用此函数。 · GAMMA — 以 Fuzzy Sum 和 Fuzzy Product 为底,以 gamma 为指数的代数乘积。 String gamma (可
4、选) 要使用的 gamma 值。仅适用于将叠加类型设置为 GAMMA 时。 默认值为 0.9。 Double 返回值 名称 说明 数据类型 out_raster 应用模糊运算符后得到的输出栅格。 输出值将始终介于 0 到 1 之间。 Raster 代码实例 模糊叠加 (FuzzyOverlay) 示例 1(Python 窗口) 本例将组合输入分类栅格和 AND 叠加类型,从而确定二者之间的最小分类值。 import arcpy from arcpy.sa import * from arcpy import env env.workspace
5、 = "c:/sapyexamples/data" outFzyOverlay = FuzzyOverlay(["fzymembout1", "fzymembout2"], "AND") outFzyOverlay.save("c:/sapexamples/output/fuzzover.tif") 模糊叠加 (FuzzyOverlay) 示例 2(独立脚本) 本例将组合输入分类栅格和 GAMMA 叠加类型。 # Name: FuzzyOverlay_Ex_02.py # Description: Combine fuzzy membership rasters data
6、together based on # selected overlay type ("GAMMA" in this case). # Requirements: Spatial Analyst Extension # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sapyexamples/data" # Set local variables inRasterL
7、ist = ["fzymembout1", "fzymembout2"] # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute FuzzyMembership outFzyOverlay = FuzzyOverlay(inRasterList, "GAMMA", 0.9) # Save the output outFzyOverlay.save("c:/sapexamples/output/fuzzoverlay") 二、加权叠加
8、 摘要 使用常用测量比例叠加多个栅格数据,并根据各栅格数据的重要性分配权重。 插图 插图中,两个输入栅格已重新分类为 1 至 3 三种公共测量级别。为每个栅格均分配了一个影响百分比。这些像元值与其影响百分比相乘,两者所得结果相加创建输出栅格。以左上角像元为例。这两个输入的值变为 (2 * 0.75) = 1.5 与 (3 * 0.25) = 0.75。1.5 和 0.75 的和为2.25。因为加权叠加获得的输出栅格为整数,所以最终值取整为 2。 用法 · 所有输入栅格数据必须为整型。浮点型栅格数据要先转换为整型栅格数据,然后才能在加权叠加中使用。重分类工具是执
9、行换转的有效方法。 · 根据评估等级为输入栅格中的各个值类分配一个新值。这些新值是原始输入栅格值的重分类。对于要从分析中排除的区域,将使用受限值。 · 根据各个输入栅格数据的重要性或者影响力百分比对其进行加权。权重是相对百分比,并且影响力百分比权重的总和必须等于 100。 · 通过更改评估等级或影响力百分比可以改变加权叠加分析的结果。 语法 WeightedOverlay (in_weighted_overlay_table) 参数 说明 数据类型 in_weighted_overlay_table 使用“加权叠加工具”可执行多个栅格数据之间的多条件分析
10、计算。 叠加分析类用于定义表。WOTable 对象用于指定条件栅格及其各自的属性。 对象形式为: · WOTable([[inRaster, influence, field, remap],...], [from, to, by]) WOTable 返回值 名称 说明 数据类型 out_raster 输出适宜性栅格。 Raster 代码实例 WeightedOverlay 示例 1(Python 窗口) 本示例创建的适宜性 IMG 栅格能识别出可作为滑雪区域的位置。 import arcpy from arcpy import env f
11、rom arcpy.sa import * env.workspace = "C:/sapyexamples/data" outsuit = WeightedOverlay(WOTable( [ ["snow", 50, 'VALUE', RemapValue([[1,"Nodata"],[5,3],[9,10],["NODATA","NODATA"]])], ["land", 20, '', RemapValue([["water","1"],["forest",5],["open field",9],["NOD
12、ATA", "NODATA"]])], ["soil", 30, 'VALUE', RemapValue([[1,"Restricted"],[5,5],[7,7],[9,9],["NODATA", "Restricted"]])] ],[1,9,1])) outsuit.save("C:/sapyexamples/output/outsuit.img") WeightedOverlay 示例 2(独立脚本) 本示例创建的适宜性 IMG 栅格能识别出可作为滑雪区域的位置。 # Name: WeightedOverlay_Ex_0
13、2.py # Description: Overlays several rasters using a common scale and weighing # each according to its importance. # Requirements: Spatial Analyst Extension # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sa
14、pyexamples/data" # Set local variables inRaster1 = "snow" inRaster2 = "land" inRaster3 = "soil" remapsnow = RemapValue([[0,1],[1,1],[5,5],[9,9],["NODATA","NODATA"]]) remapland = RemapValue([[1,1],[5,5],[6,6],[7,7],[8,8],[9,9],["NODATA","Restricted"]]) remapsoil = RemapValue([[0,1],[1,1],[5,5]
15、[6,6],[7,7],[8,8],[9,9],["NODATA", "NODATA"]]) myWOTable = WOTable([[inRaster1, 50, "VALUE", remapsnow], [inRaster2, 20, "VALUE", remapland], [inRaster3, 30, "VALUE", remapsoil] ], [1, 9, 1]) # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute WeightedOverlay outWeightedOverlay = WeightedOverlay(myWOTable) # Save the output outWeightedOverlay.save("C:/sapyexamples/output/weightover2") 北京数字空间科技有限公司






