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