arcpy多線程熱力圖

起因是這樣一段對(duì)話(huà),領(lǐng)導(dǎo):你會(huì)用腳本生成熱力圖圖片嗎?我:可以研究下。領(lǐng)導(dǎo):那這個(gè)需求就給你了。我:......
??經(jīng)過(guò)一番研究,研究出大概的思路,先將有經(jīng)緯度的表中的數(shù)據(jù)篩選出表并生成xy事件,接著利用核密度工具生成柵格,最后呢裁剪柵格通過(guò)mapping包出圖。
??出圖過(guò)程比較慢,所以考慮使用多線程(一張圖五分鐘,十九張圖多線程九分鐘你說(shuō)吼不吼)。多線程第一次用,一開(kāi)始打算用數(shù)據(jù)庫(kù)存放數(shù)據(jù)表和柵格,不過(guò)鎖表比較難解決,于是選擇了簡(jiǎn)單粗暴地在文件地理數(shù)據(jù)庫(kù)(gdb)里處理,每個(gè)文件使用一個(gè)gdb,這樣速度快也不用考慮會(huì)被鎖表,處理完以后就直接刪庫(kù)(跑路)。多線程中盡量不要有刪除操作,容易沖突,把刪除都放在單線程中這樣不容易出錯(cuò)。

MyGPpool = multiprocessing.Pool(19)
results = MyGPpool.map(batch, parameters)
MyGPpool.close()
MyGPpool.join()

arcpy.mapping導(dǎo)出格式推薦使用png格式,可以設(shè)置透明背景,最重要一點(diǎn)就是可以在瀏覽器中查看(這個(gè)是tif格式難達(dá)到的,也可能是我沒(méi)找到好的方法)。replaceDataSource替換數(shù)據(jù)源的時(shí)候要設(shè)置好路徑(不是完整路徑不是完整路徑不是完整路徑),數(shù)據(jù)源類(lèi)型,數(shù)據(jù)名稱(chēng)。

mxd = arcpy.mapping.MapDocument(mxd_file)
df = arcpy.mapping.ListDataFrames(mxd, '圖層')[0]
lyr = arcpy.mapping.ListLayers(mxd)[0]
datasetName = os.path.basename(data_raster)
dataRasterWorkspace = os.path.dirname(data_raster)
if lyr.supports("DATASOURCE"):
       lyr.replaceDataSource(dataRasterWorkspace,"FILEGDB_WORKSPACE", datasetName)
        df.extent = extent
        df.panToExtent(extent)
        arcpy.mapping.ExportToPNG(mxd, out_file, df, color_mode='24-BIT_TRUE_COLOR', world_file=True,background_color="No Color", transparent_color="No Color")
    else:
        arcpy.AddMessage("error")
    arcpy.RefreshActiveView()
    del mxd, df, lyr

本次編碼過(guò)程中感謝吳道長(zhǎng)大力支持.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容