arcgis 字段计算器 条件赋值_ArcGIS中属性表的常用操作汇总
本篇文章將平時對arcgis屬性表的相關操作記錄下來,防止忘記。此外,在技術摸索中參考了一些gis大牛的博客和技術分享,我在博客結尾也粘貼了他們的博客地址在此表示感謝。
案例一:arcgis屬性表某個字段自動編號例如:從1開始往后自動編號。
將下圖中數據類型為文本型的typeid字段進行自動編號,數據記錄從1開始往后遞增。
在該字段上右鍵,進入字段計算器,勾選“Python”;
在“預邏輯代碼塊”區域粘貼以下代碼;
rec=-1
def autoIncrement():
?global rec
?pStart = 1 #起始值為1,可修改
?pInterval = 1 #間隔值為1,可修改
?if (rec ==-1):?
? rec = pStart?
?else:?
? rec = rec + pInterval?
?return rec
(上述代碼含義:首先初始化rec為-1;接著定義一個autoIncrement方法,在這個方法里定義了一個局部變量rec,初始化pStart為1,它也是起始值,如果想typeid起始值為其它值可以修改pStart的值即可,pInterrval是間隔值,即依次遞增的數字之間的間隔是1,如果想依次遞增的數字之間的間隔是2或者3...等,可以修改pInterrval的值;再接著就是一個if()else語句,最后將rec進行返回。)
然后將autoIncrement()方法給typeid,最后點擊“確定”運行。
(注意將autoIncrement()方法給typeid時,autoIncrement()方法前不能有空格,否則會報錯!!!)
補充:
上述的案例是基于FID進行自動編號,如何根據其它字段進行自動編號呢?
思路:使用sort工具,基于某個字段進行編號,生成新的輸出數據,然后基于新的輸出數據使用案例1中的python代碼進行自動編號。
參考資料:http://www.cnblogs.com/liweis/p/4153333.html
//使用Python給要素添加序號
案例二:對屬性表中某一字段自動編號例如:屬性表中的“縣級”行政單位進行自動編號,存在縣名稱重復的情況,例如:A縣有多次重復,那就按A0001、A0002、A0003自動編號,每個縣都從0001開始編號。
python代碼如下:
UniqueDict = {}
def isDuplicateIndex(inValue):
? ?UniqueDict.setdefault(inValue,0)
? ?UniqueDict[inValue] += 1
? ?return str(UniqueDict[inValue])
字段中寫:
isDuplicateIndex( !NAME! ).zfill(4)
案例三:對屬性表中某一字段進行分段情景一:如何把一個shp文件批量均分為n個?比如:一個shp文件屬性表共有10000個行,我想分為50組,200為1組,請問除了按屬性選擇,是否有批量直接分的方法?
(1)字段計算器? int([字段]/200+1)?
(2)split-by-attributes,具體見鏈接:http://pro.arcgis.com/zh-cn/pro-app/tool-reference/analysis/split-by-attributes.htm
參考資料:http://zhihu.esrichina.com.cn/question/34781
情景二:對某一字段進行分段求和,現有一個矢量圖層,其中ACRES字段記錄了每一個面要素的面積,如何分段對該字段求和,如該字段數值在以下范圍時0-50,50-300,300-1000,>4000,其面積分別是多少?
參考資料:http://zhihu.esrichina.com.cn/article/2785
案例四:查出省級行政區劃名稱(Chinese_Ch)為山開頭,面積(Shape_Area)大于8000000的記錄。查詢文本框輸入:
"Chinese_Ch" LIKE '山%' AND "Shape_Area" >8000000?
一般查詢過程是在字段名稱選擇區中雙擊字段名、再選運算符,建立查詢條件,并用Like、
And、Or、Not將幾個條件組合起來。在設置字段的查詢條件時,可在取值區中用鼠標選取,也可直接鍵入屬性值。
字符型字段還可使用通配符,如用“%”替代多個字符,用“_”替代一個字符。例如:
"NAME"LIKE'張%'表示查詢NAME字段,第一個字符為"張",不管后續有幾個字符。
"LANDUSE"LIKE'F_'表示查詢LANDUSE字段,第一個字符"F",第二個字符任意,但后續只能有一個。
按屬性選擇記錄會出現語法錯誤,軟件提示不能完成操作,引號、括號不匹配是常見差錯,以下是注意事項:
字符型操作不能用等號代替LIKE;
字段名自身帶雙引號,如"LANDUSE",字符型取值用單引號,如'C',數字型取值不帶引號;
單引號、雙引號必須都用英文字符,不能用中英字符。
多用鼠標,少用鍵盤,可避免語法差錯;
首先數據要求是存放在個人地理數據庫(mdb)中,如果不是,需要先導入進去。這是因為個人地理數據庫對子查詢支持更好。
如果這個字段名叫name,表名叫area,SQL可類似如下寫:
[name] in (select [name] from area group by [name] having count([name]) > 1)
參考資料:
http://zhihu.esrichina.com.cn/question/6606
文件地理數據庫對子查詢提供了有限的支持,而個人地理數據庫和 ArcSDE 地理數據庫則提供完全支持,詳情見鏈接介紹:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/00s500000033000000/
案例六:查詢屬性表中要素記錄的長度
例如:查詢屬性表中要素記錄長度大于6的要素
CHAR_LENGTH(string_exp)
例如:查詢字段名為‘名稱’的長度大于6的要素
CHAR_LENGTH( 名稱 ) >=6
鏈接:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/00s500000033000000
文章轉載于CSDN,作者gislaozhang版權歸原作者所有,如有侵權請告知刪除- END -
7.72GB ARCGIS ?ERDAS ?ENVI干貨教程網盤下載ArcGIS生成等值線圖的方法ArcGIS課程包——拓撲編輯、坐標提取、屬性數據常見操作ArcGIS網絡分析之常見問題分析、診斷匯總總結
以上是生活随笔為你收集整理的arcgis 字段计算器 条件赋值_ArcGIS中属性表的常用操作汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [云炬创业基础笔记]第二章创业者测试20
- 下一篇: [云炬创业基础笔记]第二章创业者测试21