久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Arcpy簡介之離散點插值

 LibraryPKU 2017-09-06

    

離散點插值

一直在使用Python的讀者應(yīng)該會發(fā)現(xiàn)一個問題:大部分的離散點插值為網(wǎng)格數(shù)據(jù)的Python第三方庫都相當(dāng)不好用(其中包括了Scipy),,經(jīng)常會由于數(shù)據(jù)量過大,、內(nèi)存不足等原因造成程序崩潰,。那么我們是否能夠調(diào)用Arcgis工具箱里各種強大的插值函數(shù)來完成該任務(wù)呢,?答案是肯定的。

        Arcpy為用戶提供的主要模塊之一名為arcpy.sa,,是spatialanalyst的簡寫,,也就是對應(yīng)了Arcgis工具箱中的spatialanalyst工具:

    上圖中所示的大部分功能都能通過arcpy在腳本中調(diào)用,同時還提供了大量的運算符,、數(shù)據(jù)類型等等,。

現(xiàn)在我們手頭有這樣一組數(shù)據(jù):

如何通過arcpy中的插值函數(shù)將這組散點數(shù)據(jù)利用反距離權(quán)重插值法插值為柵格呢?先來看看腳本吧:

這段腳本除開最開始的載入模塊,首先我寫了一行arcpy.env.overwriteOutput=True,,這一句的目的是告訴arcpy,,我的程序是支持文件覆蓋的。如果不把overwriteOutput設(shè)為True,,那么當(dāng)遇到覆蓋文件的操作時腳本會報錯,。而arcpy.CheckOutExtension(“spatial”)這句命令,是為了讓arcpy檢查擴展模塊許可,,在外部腳本(比如現(xiàn)在這樣在spyder環(huán)境中)編寫arcpy有關(guān)的代碼,,必須要對腳本中加載的模塊進行許可檢查,否則是無法使用該模塊的,。Arcgis其他模塊對應(yīng)的擴展代碼可以再官網(wǎng)查到:

舉個例子,,比如我要在腳本中調(diào)用Arcgis3d Analyst模塊,那么我就必須在腳本開頭寫上一行:arcpy.CheckOutExtension(“3D”),。以此類推,。

接下來讀取數(shù)據(jù)的代碼應(yīng)該沒什么問題,可以直接跳過了,。

pt =arcpy.Point()是創(chuàng)建一個arcpyPoint數(shù)據(jù)類型,,通過對其中的XY,、Z賦值來獲得一個包含了xy坐標(biāo)和數(shù)值z的點,,最后將這些點存放到ptGeoms這個列表中。

sr=arcpy.SpatialReference(“WGS1984”)作用是獲得一個arcgis的地圖投影對象,,這里的輸入除了簡單的投影類型名稱外,,還可以使用arcgis地圖投影文件、地圖投影的工廠代碼作為輸入,。

search_radius=RadiusFixed(distance=3)是調(diào)用arcpy.sa中的RadiusFixed方法得到一個RadiusFixed對象,,以作為反距離插值的影響半徑。對于Idw方法來說,,除了以RadiusFixed對象作為影響半徑外,,還可以使用RadiusVariable對象作為影響半徑。RadiusVariable對象是通過控制臨近的采樣點數(shù)量來確認插值影響半徑,,而RadiusFixed則是通過設(shè)置實際距離來控制,。

接下來就簡單了,直接調(diào)用arcpy.sa的函數(shù)IdwptGeoms這個存放了離散點對象的列表進行插值,,返回一個柵格對象outIDW,。此時如果操作完成,則可以直接調(diào)用arcpy柵格對象的方法save,,將柵格保存到本地,。如果想要用matplotlib來進行繪圖操作,,則可以通過arcpy.RasterToNumPyArray工具將柵格對象轉(zhuǎn)化為numpy數(shù)組,然后利用matplotlib繪制圖形:

除了可以使用Idw工具外,,用戶還可以使用Kriging工具來進行克里金插值:

outIDW=Kriging(ptGeoms,'SHAPE','Spherical',search_radius=search_radius)最后得到的插值結(jié)果為:

可見對于離散點生成網(wǎng)格這類工作,,選擇好的插值方法以及適當(dāng)?shù)牟逯祬?shù)是離散點插值所必須的。

另外注意看我腳本中注釋掉的部分,,可以發(fā)現(xiàn)arcpy的工具不僅僅是對特定變量對象進行操作,,還可以直接對文件進行操作。比如上面我是直接對Idw生成的柵格對象進行數(shù)組轉(zhuǎn)換,,但我還可以先把柵格保存到本地,,然后使用RasterToNumPyArray去讀取改柵格文件從而獲得一樣的結(jié)果。同理,,Idw也不僅僅是對保存了離散點的列表進行操作,,它也可以對本地的離散點文件實現(xiàn)插值。但需要注意的是,,在arcpy中的文件路徑請盡量使用絕對路徑,。因為arcpy存在environment workspace的概念,相當(dāng)于默認的當(dāng)前目錄,,因此使用絕對路徑進行文件操作將更為保險,。

更多關(guān)于插值工具的參數(shù)信息可以在官網(wǎng)上查明:

http://pro./zh-cn/pro-app/tool-reference/spatial-analyst/idw.htm

       http://desktop./zh-cn/arcmap/10.3/tools/spatial-analyst-toolbox/kriging.htm

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多