arcgis python 圖形有關操作

來源:互聯網
上載者:User
 

計算欄位 (資料管理)

ArcGIS 10 匯總

為要素類、要素圖層或柵格目錄計算欄位的值。

查看計算欄位工具的使用樣本

用法
  • Python 運算式可通過 幾何對象中的屬性(type、extent、centroid、firstPoint、lastPoint、area、length、isMultipart 和 partCount)進行建立。

    !shape.area!
  • Python 運算式可以使用具有面積或線性單位的幾何 area 和 length 屬性將值轉換為不同的測量單位(例如 !shape.length@kilometers!)。如果資料存放區在地理座標系中且具有線性單位(例如英裡),則使用測地線演算法計算長度。在地理資料中使用面積單位會產生不正確的結果,這是由於沿 globe 的十進位度並不一致。

    • 面積測量單位關鍵字:

      • 英畝 | 公畝 | 公頃 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方千米 | 平方米 | 平方英裡 | 平方毫米 | 平方碼 | 平方地圖單位 | 未知
    • 線性測量單位關鍵字:
      • 厘米 | 十進位度 | 分米 | 英尺 | 英寸 | 千米 | 米 | 英裡 | 毫米 | 海裡 | 磅 | 未知 | 碼
  • 在工具對話方塊中,可將運算式直接輸入到運算式參數中,或者使用“欄位計算機”以互動方式構建運算式。

  • 使用所選要素集(如從建立要素圖層或按屬性選擇圖層內的查詢中建立的要素集)時,此工具將只更新所選的記錄。

  • 每次操作僅能對一個欄位應用計算。

  • 現有欄位值將被覆蓋。如果想要保留原始欄位值,應建立輸入表副本

  • 對於 Python 計算,必須在欄位名稱兩旁添加驚歎號(!欄位名!)。

    對於 VB 計算,欄位名稱必須用方括弧括起([欄位名])。

  • 計算文本或字元欄位的字串時,在對話方塊中,必須對字串添加雙引號("字串"),而在指令碼中,還必須對加雙引號的字串添加單引號('"字串"')。

  • 此工具也可用於更新字元項。應對使用字串的運算式添加單引號(例如 [CHARITEM] = ‘新字串')。但是,如果字串已包含單引號,則要對該字串添加雙引號,例如 [CHARITEM] = "類型'A'"。

  • 要計算數值欄位,可在運算式參數中輸入數值;值的兩旁無需加引號。

  • 如果已指定 Python 運算式,則此工具支援 arcgis.rand() 函數。已為 ArcGIS 工具建立 arcgis.rand() 函數,不應將此函數與 Python Rand() 函數相混淆。arcgis.rand() 函數的可用分布的文法在隨機值的分布文法中進行介紹。

  • 運算式與代碼塊會相互串連。代碼塊必須返回與運算式的關聯;代碼塊的結果應傳入到運算式中。

  • 代碼塊參數可用於建立複雜運算式。您可以在對話方塊中直接輸入代碼塊,或在指令碼中將代碼塊作為連續字串輸入。

  • Python 數學模組及格式可供代碼塊參數使用。您可以匯入附加模組。數學模組可提供數論函數與表達函數、冪函數與對數函數、三角函數、角度轉換函式、雙曲函數以及數學常數。要瞭解更多有關數學模組的內容,請參閱 Python 的協助。

  • 儲存的 ArcGIS 先前版本的 VB .cal 檔案可以直接使用或者只需做少量修改後即可使用。如果擁有使用 ArcObjects 的過去版本的 VBA 代碼,則計算需經過修改後才能用於 10.0。

  • 計算串連資料時,您無法直接計算串連列。然而,您可以直接計算源表的列。要計算串連資料,必須先將串連表或串連圖層添加至 ArcMap。然後可以分別對此資料執行計算。這些更改將反映在串連列中。

  • 計算欄位樣本
文法CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
參數 說明 資料類型
in_table

此表包含將通過新的計算進行更新的欄位。

Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View
field

將通過新的計算進行更新的欄位。

Field
expression

使用簡單計算運算式建立的值將用於填充所選行。

SQL Expression
expression_type(可選)

指定要使用的運算式的類型。

  • VB —運算式將使用標準 VB 格式編寫。這是預設設定。
  • PYTHON —運算式將使用標準 Python 格式編寫。地理處理器方法和屬性的使用與建立 9.2 版地理處理器相同。
  • PYTHON_9.3 —運算式將使用標準 Python 格式編寫。地理處理器方法和屬性的使用與建立 9.3 版地理處理器相同。
String
code_block(可選)

允許為複雜運算式輸入代碼塊。

String
程式碼範例CalculateField 樣本(Python 視窗)

以下 Python 視窗指令碼示範了如何在立即模式下使用 CalculateField 函數。

import arcpyfrom arcpy import envenv.workspace = "C:/data"arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2",                                 '!VEG_TYPE!.split(" ")[-1]', "PYTHON")
CalculateField 樣本:計算質心

使用 CalculateField 將質心值分配給新欄位。

# Name: CalculateField_Centroids.py# Description: Use CalculateField to assign centroid values to new fields # Import system modulesimport arcpyfrom arcpy import envtry:     # Set environment settings    env.workspace = "C:/data/airport.gdb"     # Set local variables    inFeatures = "parcels"    fieldName1 = "xCentroid"    fieldName2 = "yCentroid"    fieldPrecision = 18    fieldScale = 11    # Expressions are calculated using the Shape Field's geometry property    expression1 = "float(!SHAPE.CENTROID!.split()[0])"    expression2 = "float(!SHAPE.CENTROID!.split()[1])"     # Execute AddField    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE",                               fieldPrecision, fieldScale)    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE",                               fieldPrecision, fieldScale)     # Execute CalculateField     arcpy.CalculateField_management(inFeatures, fieldName1, expression1,                                    "PYTHON")    arcpy.CalculateField_management(inFeatures, fieldName2, expression2,                                    "PYTHON")except Exception, e:    # If an error occurred, print line number and error message    import traceback, sys    tb = sys.exc_info()[2]    print "Line %i" % tb.tb_lineno    print e.message
CalculateField 樣本:計算範圍

使用具有代碼塊的 CalculateField 計算基於範圍的值。

# Name: CalculateField_Ranges.py# Description: Use CalculateField with a codeblock to calculate values#  based on ranges # Import system modulesimport arcpyfrom arcpy import env # Set environment settingsenv.workspace = "C:/data/airport.gdb" # Set local variablesinTable = "parcels"fieldName = "areaclass"expression = "getClass(float(!SHAPE.area!))"codeblock = """def getClass(area):    if area <= 1000:        return 1    if area > 1000 and area <= 10000:        return 2    else:        return 3""" # Execute AddFieldarcpy.AddField_management(inTable, fieldName, "SHORT") # Execute CalculateField arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON",                                 codeblock)
CalculateField 樣本:計算隨機值

使用 CalculateField 將隨機值分配給新欄位。

# Name: CalculateField_Random.py# Description: Use CalculateField to assign random values to a new field   # Import system modulesimport arcpyfrom arcpy import env # Set environment settingsenv.workspace = "C:/data/airport.gdb"  # Set local variablesinFeatures = "parcels"fieldName = "RndValue"expression = "arcgis.rand('Integer 0 10')" # Execute AddFieldarcpy.AddField_management(inFeatures, fieldName, "LONG") # Execute CalculateField arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON")
環境當前工作空間相關主題欄位工具集概述

著作權 1995-2011 Esri. 著作權所有,並保留一切權利。

 

來自協助

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.