python與arcgis
❶ python、arcgis求解輻射力范圍
基於主成分所得的綜合評價值,在ArGIS的Generate方法下,用fishnet模塊直接生成5km×5km的格網及對應的label點。起初選用1km*1km格網,但數據量過大,難以操作。利用長三角及京津冀城市群邊界圖裁切,得到相應地區格網圖,並分別計算各城市到格網點的距離。後續計算過程通過編寫python程序完成:利用引力模型計算各網格受區域內各個城市的輻射值,按照「取大」的原則確定各網格的被輻射值及歸屬城市。最後將計算結果鏈接到ArcGIS中,通過分層設色,按顏色深淺表示輻射的強弱作出輻射強度圖。由於輻射值過小,為了便於顯示結果,統一乘1000000。利用唯一值法表示,則可以說明各城市的輻射范圍[借鑒自潘竟虎文章]。
❷ arcgis Python載入項滑鼠事件
arcgisPython載入項滑鼠事件如下
載入項提供了一種向最終用戶分發自定義用戶界面的簡便方式。不需要安裝程序。只要將一個擴展名為.esriaddin的壓縮文件復制到一個已知文件夾中,其他工作交給ArcGIS來處理。為了能夠進一步簡化開發過程,ESRI還提供了一個Python載入項向導。你可以從Esri官網下載安裝向導。這也是本章要介紹的第一個案例。
我們還可以創建多個類型的載入項。按鈕和工具是最為簡單的載入項。點擊按鈕來執行業務邏輯操作。工具與按鈕非常相似,不過工具需要先與地圖窗口進行交互後再執行業務邏輯操作。組合框則提供了選項列表讓用戶進行選擇。
❸ Arcgis Engine二次開發用python可以嗎
1.自定義工具箱是什麼
就像名字一樣,自定義工具箱是由個人創建的工具箱,就像下面這樣,可以理解成一個 .tbx 後綴的壓縮包,每一個工具箱中都可以添加多個工具集、腳本工具甚至模型構建器工具。
一大堆工具箱
1.1如何添加自定義工具箱(熟悉可跳過)
第一步:右鍵點擊 ArcToolbox -> 添加工具箱
第二步:在打開的添加工具箱窗口中選中需要添加的工具,然後點擊右下角的打開即可。
添加工具箱到 Arcmap
1.2如何創建自定義工具箱
點擊右上角的紅色工具箱符號,可以新建並重命名一個工具箱。
我們這里新創建了一個海怪工具箱,用於之後的教程演示。
新建工具箱
1.3添加一個腳本工具
新創建的工具箱就像一個大箱子,箱子呢是用來裝工具的,你可以直接在工具箱中右鍵,然後點擊添加,再點擊腳本,進而創建一個腳本工具;
亦或是右鍵,點擊新建,再點擊工具集,創建一個可以自定義名稱的工具集,然後在工具集里新建一個腳本工具。
這里添加的腳本工具只是一個空殼,我們後面會繼續完善。
新建的工具箱位於 ../Chapter7/海怪工具箱.tbx。
2.工具箱的封裝
工具箱由三部分組成,其中有兩部分需要我們來控制:
一是輸入界面:確定工具箱輸入界面的參數定義和設置;
二是 Python 源代碼:功能的實現,為 .py 後綴的腳本文件;
三是對參數行為提供額外控制的可選驗證代碼,其位於工具箱中(這部分自帶,基本上不用修改)。
所以下面的重點就是輸入界面和 Python 源代碼。
2.1工具箱輸入界面
工具箱輸入界面,或者說圖形交互界面(GUI),就像下面的幾張圖一樣,從該界面我們可以控制工具的行為,自定義輸入界面然後配合 Python 腳本,可以實現多種客制化的功能。
簡單來說,你可以認為輸入界面是依託於 Arcmap 的「前端」,腳本代碼就是負責運行的「後端」。
導入導出工具:
為方便演示,製作一個非常簡單的工具箱,它的功能呢就是把輸入的要素類(資料庫或者 shp )再導出來而已,是完全沒有用的導入導出功能啦,不過作為演示還是非常不錯的。
製作完成後的導入導出工具的界面
第一步:
在工具箱中,右鍵點擊添加,再點擊腳本,然後修改名稱,修改成你想要的名字,勾選存儲相對路徑名,然後點擊下一頁。
修改名稱
第二步:
然後添加腳本文件,添加該腳本文件 ../Chapter7/toolscript/input_and_output.py,讀者可以在最後的下載包中找到該文件。
然後點擊下一頁。
鏈接python腳本
第三步:
控制用戶交互界面。ArcGIS 在這里內置了一整套簡單但是實用的圖形控制項,比如輸入菜單、下拉框、多選框、單選等,藉由這些圖形控制項我們可以控制腳本工具的圖形交互界面。
我們這里使用的腳本功能非常簡單,上面也有說到:輸入一個矢量要素類,不做任何處理,然後輸出一個矢量要素類。
為了匹配這個腳本,我們需要設置一個輸入圖層的控制項,同時為了能順利的輸出,也需要一個輸出圖層的控制項,注意一個是輸入一個是輸出。
從下圖可以看到,左邊(左邊的橙色框)是顯示名稱,其中輸入輸出控制項的名稱以及輸入控制項的名稱,這里命名為輸入要素和輸出要素;然後在右邊(右邊的橙色框)的數據類型下拉框中,我們選擇要素圖層,這里只能做選擇,不能任意輸入。
設置名稱和數據類型
那麼輸入輸出是如何區分的呢?
選中輸入要素(變成藍色),然後可以看到下方(下方橙色框)的參數屬性設置選項卡,這里可以對參數進行調整。
參數選項
① 類型:有三種,一般只會用到 Required 和 Optional,表示必須和可選,用於控制參數是否可以忽略不填;
② 方向: 兩種,Input 和 Output,表示輸入和輸出,大部分情況都是使用 Input 來獲得參數,Output 用於獲得最後的成果數據,像是矢量、柵格或者圖表;
③ 多值:Yes 或者 No,用於輸入多個相同類型的數據,工具打開後就是下面這樣,在輸入要素中可輸入多個要素類;
④ 默認:設置一個控制項的默認值,直接輸入即可。可配合多值一同使用,使用 ; (英文的分號)分開,
結果如下,可以看到一打開該工具就已經填充上了預設的多個默認值(報錯是因為數據類型不是要素圖層);
⑤ 環境:工具箱的環境設置,比如掩膜、容差范圍、默認資料庫位置等,一般不預先設置;
⑥ 過濾器:選擇文件類型可以在選擇文件時只顯示特定格式的文件;
⑦ 獲取自:指定數據的獲取源。這是個什麼意思呢?比如我們想要獲取圖層A的某個欄位,獲取源就是圖層A。
以下面這種圖作為例子,新增名為欄位的控制項(上方的橙色框),數據類型也是欄位,然後參數屬性中獲取自選擇輸入要素(下方橙色框)。
設置欄位控制項
點擊完成後,打開腳本工具。在輸入要素框中選擇一個圖層,然後再點擊獲取欄位,如下就可以選擇圖層中的欄位了。
獲取圖層的欄位
⑧ 符號系統:在最下面還有一個符號系統,通常只能作用於輸出的矢量圖層(方向:Output),可為輸出圖層指定設置好的 lyr 文件樣式。
設置符號系統
第四步:
點擊右下方的完成,那麼腳本工具的輸入界面就完成了。
2.2 Python 腳本
工具箱輸入界面和 Python 代碼要相互配合才行,工具箱界面中的輸入、輸出以及各種各樣的參數,在 Python 腳本文件中都得一一對應上,將輸入界面中的各個參數傳給 Python 腳本,這樣才能讓 Python 腳本按照預期的效果正常運行。
看上去有點麻煩,但實際上 arcpy 中提供了現成的函數就可以直接獲得參數。
①參數對接(獲取)
至於如何對接參數,我們使用剛剛的那個腳本文件舉例:
../Chapter7/toolscript/input_and_output.py
# -*- coding:utf-8 -*-
import arcpy
#▶1◀
input_lyr = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(1)
if __name__ == '__main__':
lyr = arcpy.mapping.Layer(input_lyr)
arcpy.CopyFeatures_management(lyr, output)
▶1◀:arcpy 提供了 GetParameterAsText(index) 函數,該函數根據輸入界面的排序號碼獲得指定的參數。比如 GetParameterAsText(0) 獲得的就是輸入圖層參數, GetParameterAsText(1) 獲得的就是第二個參數,也就是輸出圖層參數。
如果有更多參數,以此類推。
②參數對接中應該注意的情況
GetParameterAsText(index) 從輸入界面獲得的參數都會轉變成字元串,沒錯都是字元串。
如果你只是輸入輸出地址這種,那麼沒有問題,因為地址本來就是字元串,但是如果你設置了一個選擇長度范圍的長整型的控制項、亦或是某種布爾值選擇,最後輸入到 python 腳本這里都會變成字元串。
整數變成字元串,使用 int(str) 規避;
布爾型變成字元串,True 變成了 "True",False 變成了 "False",這樣就不能判斷真假了,需要寫一個判斷語句或者隨便你,方法很多;
還有就是一個輸入控制項多值的情況,所有值根據先後連接成一個字元串,中間由 、(英文分號)間隔,可以使用 split 函數分開;
❹ arcgis中打開python後,如何編程
此功能和Python的編輯模式是一樣的:
1.
編寫一行,運行一行;
2.
最大的的好處是,可以很方便的調用ArcGIS的介面,處理GIS數據;
3.
當然也可以使用ArcGIS
Toolboxes:
❺ 怎麼用python製作ArcGIS斷裂點插件
方法/步驟
新建一個txt文本,在文本中寫入如下代碼代碼作用是根據緯度和太陽傾角獲取正午太陽高度角和方位角。
將第一步的txt文本保存為*.py文件。
在
ArcToolbox
里,右鍵
toolbox,選添加->scripts,填寫如下圖文本(9.3版本界面):
單擊「下一步」後是參數配置頁面:Latitude、Declination是輸入參數,Sun
Angle、Arimuth是輸出參數,完成腳本參數設置。
5
運行腳本出現如下所示對話框,設置好輸入參數即可被Python腳本getparameterastext語句獲,以進行更多的後續操作。這實際上實現了Python與用戶的交互。
6
最後,將腳本工具拖動到模型構建器里(如下圖),腳本工具的輸出參數又可以作為其他處理過程的輸入參數,進而建立工作流模型。
❻ 怎麼用python開發arcgis
在Pyhton寫的一些代碼,用戶交互不方便,用戶體驗比較差,不方便重用。在ArcGIS中可以將用寫的Python代碼導入到ToolBox中,這樣用起來就比較方便了。這里用按要素裁剪柵格的Python來演示如何導入ArcGIS中。代碼如下:
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import arcpy
import string
from arcpy.sa import *
try:
raster = arcpy.GetParameterAsText(0) #要裁剪的柵格
clip_feat = arcpy.GetParameterAsText(1) #裁剪要素類
field = arcpy.GetParameterAsText(2) #命名欄位
outworkspace = arcpy.GetParameterAsText(3) #命名欄位裁剪後輸出目錄
for row in arcpy.SearchCursor(clip_feat):
mask=row.getValue("Shape")
outPath=outworkspace+"\\"+str(row.getValue(field))
outExtractByMask = ExtractByMask(raster,mask)
outExtractByMask.save(outPath)
except arcpy.ExecuteError:
print arcpy.GetMessages() 在用戶工具箱中新建工具箱(在系統工具箱中不能新建),在工具箱右鍵,添加腳本;
輸入名稱、標簽、描述等信息。下一步,選擇腳本文件。(這里需要注意的是:一定要勾選"存儲相對路徑名"這個選項)
設置參數,這是最重要的一步。其中參數即代碼中GetParameterAsText(n),並選擇合適的數據類型,在參數屬性中也可以進行相關設置。如果輸出柵格名稱按裁剪要素中的某個欄位,需要設置"獲取息"屬性,還要進行過濾一下。
設置好一切參數過後,就可以來進行測試了。在本機上測試通!
接下來便是怎樣移植到其他電腦了的問題了。前面我說說過要存儲為相對路徑,否則,將報錯00576:腳本工具使用的腳本未處於所需位置。創建腳本工具時,有一個選項用於存儲相對路徑名(而不是絕對路徑名)。設置此選項後,腳本的相對位置和保存腳本工具的工具箱必須保持不變。執行工具時移動兩者中的任何一個都會出現此錯誤。
但改為相對路徑後,在其他電腦上也能正常運行,但彈出了警告窗口。原因是客戶機上沒有勾選擴展模塊相應的功能。這個示例需要勾選空間分析模板,因為使用了按掩膜提取這個工具。這個腳本實現的詳情參考:使用Python腳本批量裁切柵格
發布給他人,涉及到個人知識產權的問題,怎樣讓他人使用工具,又不能看到腳本代碼?如果編輯調試完成了,在腳本工具右鍵可導入腳本。
設置密碼後,即可。
❼ arcgis 怎麼用python做統計分析
方法/步驟
1
打開arcmap軟體,點擊工具欄上的ArcToolbox工具箱,在工具箱裡面選擇要進行數據處理的工具(工具的選擇視數據處理的內容而定),本文選擇了「Define Projection」定義投影的工具進行說明。
雙擊此工具,在彈出的工具窗口點擊右下角的「Show Help>>」按鈕。
2
點擊「Tool Help」按鈕,此時就打開了軟體的幫助文檔並定位到了此工具(define projection)對應的頁面,往下拉動滾動條,定位到此工具的python腳本的內容:
Syntax 介紹了此工具腳本的語法
Code Sample 介紹了腳本使用的例子
拷貝腳本使用例子裡面的代碼。
3
在軟體的主界面點擊「Geoprocessing」菜單-->點擊「Python」菜單項,即出現內嵌在arcigis中的python工具窗口。
python工具窗口的左邊是代碼編輯區域,右邊是信息提示區域。
4
把第2步拷貝的代碼語句粘貼到python工具窗口的左邊區域,修改一下工具腳本的參數(視具體工具和數據而定),連續點擊兩下回車鍵。
5
等待腳本程序的執行完成,完成之後在桌面右下角會彈出提示信息,同時pythong工具窗口的右邊區域也會有具體的工具腳本執行信息。
6
執行完成之後,在arcmap載入處理過的數據,右鍵查看屬性,可以看到通過此工具腳本(define projection)進行投影定義的數據已經具有了投影參數。
http://jingyan..com/article/eae07827ba96a51fec548513.html