一、需求
最近有小伙伴提個(gè)需求
能不能用Arcgis批量生成地球化學(xué)圖
什么意思呢
就是他給我一個(gè)excel表格(圖1)
實(shí)驗(yàn)室返回的數(shù)據(jù)
需要做成一系列等值線圖(圖2)
因?yàn)槌鰣D結(jié)果“長”得都差不多
就是改變?cè)囟?/span>
想要個(gè)批量出圖的功能
| |
1元素?cái)?shù)據(jù)
| 2系列圖
|
經(jīng)過試驗(yàn)操作
我給了他三種批量成圖方法
常規(guī)方法、模型構(gòu)建器方法、Arcpy腳本方法
下面詳細(xì)展開
二、思路
首先介紹常規(guī)方法
第一步要把表格數(shù)據(jù)轉(zhuǎn)成點(diǎn)要素(圖1)
然后在工具箱插值分析中找到克里金法(圖2)
由于克里金插值法
具有產(chǎn)生預(yù)測表面的能力
而且能夠?qū)︻A(yù)測的確定性或準(zhǔn)確性提供某種度量
講人話,就是它的參數(shù)很多,功能強(qiáng)大
實(shí)際應(yīng)用中要根據(jù)需要及數(shù)據(jù)特點(diǎn)賦參數(shù)值
至于其他操作很簡單,不作重點(diǎn)介紹
| |
1Arcgis添加XY數(shù)據(jù)
| 2克里金插值方法
|
首先什么是模型構(gòu)建器
它是用來創(chuàng)建、編輯和管理模型的應(yīng)用程序
是將一系列地理處理工具串聯(lián)在一起的工作流
它將其中一個(gè)工具的輸出作為,另一個(gè)工具的輸入使用起來
講人話,就是把我們的操作流程固定下來
給它個(gè)數(shù)據(jù),讓他自己跑程序
幾乎不需要自己寫代碼
本例模型構(gòu)建器主體功能為克里金法(圖1)
克里金是處理不同列的(Z字段)
需要迭代列,而不是迭代行數(shù)據(jù)(圖2)
由于模型構(gòu)建器的迭代器主要是迭代對(duì)象
如文件對(duì)象,要素類對(duì)象,行對(duì)象,要素對(duì)象等
而不同字段屬于對(duì)象的結(jié)構(gòu)
故不能直接用,需要迂回操作
我的辦法,將excel點(diǎn)數(shù)據(jù)生成系列點(diǎn)文件(圖3)
然后再插入迭代器,迭代要素類(圖4)
生成系列圖,最后根據(jù)樣式生成系列圖集
| |
1克里金
| 2克里金循環(huán)列
|
| |
3系列點(diǎn)文件
| 4迭代要素類
|
什么是腳本
腳本(Script)是一種純文本保存的程序
是批處理文件的延伸
而ArcPy是一個(gè)Python站點(diǎn)包(site package)
通過Python執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)管理和地圖的自動(dòng)化
講人話,腳本就是自己編寫自己想要的功能
而形成工具使用
寫腳本也不麻煩
在桌面新建個(gè)文本文件即可
本次需求以面向過程為思想,需要用做三個(gè)事
第一個(gè)事:excel轉(zhuǎn)點(diǎn)要素,寫成.py文件
第二個(gè)事:遍歷所有元素批量克里金,寫成.py文件
第三個(gè)事:根據(jù)模板遍歷所有元素,寫成.py文件
再分別設(shè)置參數(shù),配置腳本工具
以第一個(gè)事為例
腳本操作,先寫代碼(圖1)
然后根據(jù)需要設(shè)置三個(gè)參數(shù)
打開腳本工具(圖2)
完成excel轉(zhuǎn)點(diǎn)要素操作
| |
1python腳本
| 2腳本工具
|
二、操作
(一)模型構(gòu)建器
1.excel轉(zhuǎn)多個(gè)點(diǎn)要素
提供兩種辦法
方法一:多個(gè)工作表分別導(dǎo)入
將插值列統(tǒng)一修改為“Z”字段
| |
1整理excel
| 2多個(gè)表分別導(dǎo)入 |
方法二:導(dǎo)入總表后,分別導(dǎo)出
然后再刪除無關(guān)字段
統(tǒng)一修改為“Z”字段
| |
1分別導(dǎo)出 | 2刪除字段
|
2.設(shè)置模型構(gòu)建器
在Arccatalogue目錄下,新建工具箱(圖1)
新建模型,打開模型,插入迭代器
選擇要素類,雙擊迭代要素類(圖2)
工作空間或者要素?cái)?shù)據(jù)集(圖3)
選擇待處理文件夾(上一步所有shp文件夾)
并將其設(shè)置成模型參數(shù)(圖4)
設(shè)置模型參數(shù)方法:
在“批量出圖”上,單擊鼠標(biāo)右鍵
選擇“模型參數(shù)”(圖4),設(shè)置完成后
“批量出圖”右上角多一個(gè)“P”表示已設(shè)置成功
| |
1新建工具箱
| 2迭代器 |
| |
3迭代要素 | 4設(shè)置模型參數(shù) |
然后搜索“克里金法”
單擊鼠標(biāo)左鍵不放,拖拽到模型構(gòu)建器內(nèi)
雙擊克里金法(圖1)
在輸出表面柵格輸入
%工作空間%\%名稱%(圖2)
(為什么不用絕對(duì)路徑比如c\users\desktop
因?yàn)閮蓚€(gè)%內(nèi)部可以放變量
也是根據(jù)需要自己定,讓這個(gè)程序更靈活)
創(chuàng)建結(jié)果輸出變量
也就是上面兩個(gè)%里的“工作空間”
方法:在模型菜單“插入”下選擇“創(chuàng)建變量”
選擇“工作空間”變量類型(圖3)
插入“工作空間”后,將其配置為模型參數(shù)
方法:在“工作空間”單擊鼠標(biāo)右鍵
選擇“模型參數(shù)”(圖4),設(shè)置完成后
“工作空間”右上角多一個(gè)“P”表示已設(shè)置成功
| |
1克里金法
| 2配置參數(shù) |
| |
3插入?yún)?shù)
| 4設(shè)置模型參數(shù)
|
所有設(shè)置完成后
關(guān)閉模型編輯器,更改保存(圖1)
雙擊模型工具,添加參數(shù)(圖2)
執(zhí)行模型工具(圖3)
執(zhí)行結(jié)果(圖4)
將結(jié)果添加到Arcgis數(shù)據(jù)視圖
發(fā)現(xiàn)處理后的圖形是方形的
(處理范圍是所有點(diǎn)的范圍)也不太完美
接下來在添加三個(gè)參數(shù)
處理范圍、保存分辨率和掩膜
①.添加處理范圍并設(shè)置參數(shù)方法:
單擊鼠標(biāo)左鍵“克里金法”
選擇獲取參數(shù)-從環(huán)境-處理范圍-范圍(圖1)
在“范圍”上右鍵,選擇為模型參數(shù)
②.添加分辨率并設(shè)置參數(shù)方法:
單擊鼠標(biāo)左鍵“克里金法”
選擇獲取參數(shù)-從環(huán)境-柵格分析-像元大?。▓D2)
在“像元大小”上右鍵,選擇模型參數(shù)
③.掩膜并設(shè)置參數(shù)方法:
單擊鼠標(biāo)左鍵“克里金法”
選擇獲取參數(shù)-從環(huán)境-柵格分析-掩膜(圖3)
在“掩膜”上右鍵,選擇模型參數(shù)
在模型工具,單擊右鍵,選擇屬性
調(diào)整參數(shù)順序(圖4),保存
雙擊模型工具并添加需要參數(shù)(圖1)
執(zhí)行模型工具,結(jié)果如圖所示(圖2)
圖形顯示是掩模后的,分辨率50
此時(shí)結(jié)果是我們想要的
| |
1執(zhí)行模型工具 | 2執(zhí)行結(jié)果 |
3.設(shè)置輸出模板
切換布局視圖
在布局視圖設(shè)置統(tǒng)一輸出樣式(圖1)
分別添加圖名、比例尺、指北針、圖例等(圖2)
這部分不作重點(diǎn),不多說
| |
1選擇色帶
| 2設(shè)置圖名等 |
4.所有元素輸出一遍
統(tǒng)一出圖樣式方法:
做其他元素時(shí),選擇導(dǎo)入符號(hào)系統(tǒng)
選擇第一次配置的(Al2O3)圖層色帶樣式(圖1)
同理分別設(shè)置所有元素(圖2)
至此批量制圖結(jié)束
| |
1導(dǎo)入符號(hào) | 2其他元素圖 |
方法評(píng)價(jià):
模型構(gòu)建器方法
不需要編程,簡單的配置即可
能解決批量處理元素的克里金插值法
但是有條件限制(迭代器不能迭代列)
為能迭代每一個(gè)元素
我把每列元素轉(zhuǎn)成點(diǎn)文件
雖然解決了迭代問題,也解決了克里金問題
但畢竟還是要操作好多列
而且每個(gè)元素輸出也要單獨(dú)修改
還是有點(diǎn)麻煩
為避免做重復(fù)性工作
也就有下面的的Arcpy腳本方法
(二)Arcpy腳本
網(wǎng)上也類似代碼
參考文章
《ArcPy讀取Excel多時(shí)序數(shù)據(jù)、批量反距離加權(quán)IDW插值與批量掩膜》
網(wǎng)址:https://baijiahao.baidu.com/s?id=1733494862361369132
不過不是克里金方法
而且也不是遍歷每一列數(shù)據(jù)
于是對(duì)前人代碼進(jìn)行修改和自定義功能
最終達(dá)成目的
也分為三個(gè)步驟進(jìn)行說明
1.excel轉(zhuǎn)點(diǎn)要素.py
在桌面新建文本文檔
復(fù)制以下代碼
另存為python文件(圖1)
設(shè)置為腳本工具方法:
在工具箱下右鍵添加腳本(圖2)
設(shè)置標(biāo)簽為“Excel轉(zhuǎn)shp”(圖3)
單擊下一步,導(dǎo)入腳本
選擇上面另存的python文件(圖4)
接下來為腳本設(shè)置參數(shù)名稱及數(shù)據(jù)類型(圖5)
最后雙擊腳本工具
添加自定義參數(shù)(圖6)
| |
1寫腳本文件
| 2新建腳本工具
|
| |
3設(shè)置名稱
| 4導(dǎo)入腳本
|
| |
5調(diào)整參數(shù) | 6執(zhí)行腳本工具 |
執(zhí)行腳本工具
詳細(xì)操作見下面動(dòng)圖
2.批量克里金.py
同上一個(gè)操作
在桌面新建文本文檔
復(fù)制以下代碼
另存為python文件(圖1)
在工具箱下右鍵添加腳本(圖2)
設(shè)置標(biāo)簽為“批量克里金”(圖3)
單擊下一步,導(dǎo)入腳本
選擇上面另存的python文件(圖4)
為腳本設(shè)置參數(shù)名稱及數(shù)據(jù)類型(圖5)
最后自定義參數(shù),執(zhí)行腳本工具(圖6)
| |
1寫腳本文件
| 2新建腳本工具
|
| |
3設(shè)置名稱
| 4導(dǎo)入腳本
|
| |
5調(diào)整參數(shù) | 6執(zhí)行腳本工具 |
詳細(xì)操作見下面動(dòng)圖
3.根據(jù)模板批量修改樣式.py
同上一個(gè)操作
在桌面新建文本文檔
復(fù)制以下代碼
另存為python文件(圖1)
在工具箱下右鍵添加腳本(圖2)
設(shè)置標(biāo)簽為“根據(jù)模板批量出圖”(圖3)
單擊下一步,導(dǎo)入腳本
選擇上面另存的python文件(圖4)
為腳本設(shè)置參數(shù)名稱及數(shù)據(jù)類型(圖5)
最后自定義參數(shù),執(zhí)行腳本工具(圖6)
| |
1寫腳本文件
| 2新建腳本工具
|
| |
3設(shè)置名稱
| 4導(dǎo)入腳本
|
| |
5調(diào)整參數(shù) | 6執(zhí)行腳本工具 |
詳細(xì)操作見下面動(dòng)圖
Arcpy腳本工具方法
需要注意的點(diǎn)很多
為方便理解,貼出錄制視頻
供大家學(xué)習(xí)
最后做個(gè)總結(jié)
平時(shí)工作遇到需要批量處理的事情
要么選擇模型構(gòu)建器,要么用Python
模型構(gòu)建器相對(duì)來說簡單
寫這篇文章的時(shí)候,我直接建的
幾乎沒有調(diào)試,所有步驟及結(jié)果一次通過
而Python方法相對(duì)復(fù)雜些
上文三個(gè)步驟第一個(gè)和第三個(gè)網(wǎng)上有類似模塊
但功能結(jié)果都不一樣,需要修改
第二個(gè)批量克里金.py是我自己寫的
總體來說Python方法更方便,也更靈活
最終實(shí)現(xiàn)了小伙伴需求,很開心