1. 程式人生 > >ArcGIS教程:最大似然法分類

ArcGIS教程:最大似然法分類

  摘要

  對一組柵格波段執行最大似然法分類並建立分類的輸出柵格資料。

  用法

  · 通過建立特徵、編輯特徵,或通過 Iso 聚類工具建立的任何特徵檔案,對於輸入特徵檔案而言均為有效條目。它們都具有一個 .gsg 副檔名。

  · 預設情況下,輸出柵格中的所有像元都將進行分類,每個具有相等概率權重的類都會附加到相應的特徵中。

  · 輸入先驗概率檔案必須是包含兩列的 ASCII 檔案。左列中的值表示類 ID。右列中的值表示相應類的先驗概率。類別先驗概率的有效值必須大於或等於零。如果指定零作為概率,則類無法顯示在輸出柵格中。指定先驗概率的總和必須小於或等於一。該檔案的格式如下:

  · 1 .3

  · 2 .1

  · 4 .0

  · 5 .15

  · 7 .05

  8 .2

  檔案中所忽略的類將接收值 1 其餘部分的平均先驗概率。在上面的示例中,所有從 1 到 8 的類都在特徵檔案中表示。類3 和類 6 的先驗概率在輸入先驗概率檔案中缺失。由於上述檔案中所有指定概率的總和等於 0.8,概率的其餘部分 (0.2)將與未指定類的數量 (2) 相除。因此,類 3 和類 6 將被分別指定概率 0.1。

  · 位於任意兩個有效值之間的指定剔除分數將被分配給下一個更高級別的有效值。例如,0.02 將變成 0.025。

  · 通過剔除分數得到的輸出柵格中的像元數和由小於輸入的相應剔除分數值的置信度總和表示的像元數之間存在直接關係。

  · 如果輸入為建立自多波段柵格(超過三個波段)的圖層,則操作將會考慮與源資料集相關聯的所有波段,而不僅僅是由圖層載入(符號化)的三個波段。

  · 您可以使用多種方式將多波段柵格的波段子集指定為工具的輸入。

  · 如果要使用工具對話方塊,則通過輸入柵格波段旁邊的按鈕導航至多波段柵格,開啟柵格並選擇所需波段。

  · 如果多波段柵格是內容列表中的圖層,則可以使用建立柵格圖層工具來建立一個新的只包含所需波段的多波段圖層。

  · 您還可以用波段合成來建立一個只包含所需波段的新資料集,並將生成的資料集用作工具的輸入。

  ·在 Python 中,可以在工具引數中以列表形式直接指定所需波段。

  · 如果特徵檔案中的類名稱與類 ID 不同,則會向名為 CLASSNAME 的輸出柵格屬性表新增一個附加欄位。對於輸出表中的每個類,CLASSNAME 會包含與該類關聯的類名稱。例如,如果特徵檔案中各個類的類名稱是描述性字串名稱(如針葉樹、水體和市區),則這些名稱會被傳遞到 CLASSNAME 欄位。

  · 輸入先驗概率檔案的副檔名是 .txt。

  語法

  MLClassify (in_raster_bands, in_signature_file, {reject_fraction}, {a_priori_probabilities}, {in_a_priori_file}, {out_confidence_raster})

  程式碼例項

  MaximimumLikelihoodClassification 示例 1(Python 視窗)

  本例將建立包含來自輸入特徵檔案和多波段柵格的五個類的分類輸出柵格。

  import arcpy

  from arcpy import env

  from arcpy.sa import *

  env.workspace = "C:/sapyexamples/data"

  mlcOut = MLClassify("redlands", "c:/sapyexamples/data/wedit5.gsg", "0.0",

  "EQUAL", "", "c:/sapyexamples/output/redmlcconf")

  mlcOut.save("c:/sapyexamples/output/redmlc")

  MaximimumLikelihoodClassification 示例 2(獨立指令碼)

  本例將建立包含來自輸入特徵檔案和多波段柵格的五個類的分類輸出柵格。

  # Name: MLClassify_Ex_02.py

  # Description: Performs a maximum likelihood classification on a set of

  # raster bands.

  # 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

  inRaster = "redlands"

  sigFile = "c:/sapyexamples/data/wedit5.gsg"

  probThreshold = "0.0"

  aPrioriWeight = "EQUAL"

  aPrioriFile = ""

  outConfidence = "c:/sapyexamples/output/redconfmlc"

  # Check out the ArcGIS Spatial Analyst extension license

  arcpy.CheckOutExtension("Spatial")

  # Execute

  mlcOut = MLClassify(inRaster, sigFile, probThreshold, aPrioriWeight,

  aPrioriFile, outConfidence)

  # Save the output

  mlcOut.save("c:/sapyexamples/output/redmlc02")