国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

這篇具有很好參考價(jià)值的文章主要介紹了ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??本文介紹基于Python語(yǔ)言中ArcPy模塊,實(shí)現(xiàn)ArcMap自動(dòng)批量出圖,并對(duì)地圖要素進(jìn)行自定義批量設(shè)置的方法。

1 任務(wù)需求

??首先,我們來(lái)明確一下本文所需實(shí)現(xiàn)的需求。

??現(xiàn)有通過(guò)Python基于Excel數(shù)據(jù)加以反距離加權(quán)空間插值并掩膜圖層所繪制的北京市在2019年05月18日00時(shí)至23時(shí)(其中不含19時(shí))等23個(gè)逐小時(shí)PM2.5濃度插值數(shù)據(jù)柵格圖層,每小時(shí)一個(gè)圖層,因此共23個(gè)圖層;以當(dāng)日10時(shí)為例,該時(shí)刻的柵格圖層如下所示。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

??我們希望做到的有兩點(diǎn)。首先,我們可以看到前述23個(gè)柵格圖層的符號(hào)系統(tǒng)都為灰度拉伸的狀態(tài),因此希望按照一個(gè)給定的模板圖層文件m.lyr,調(diào)整這23個(gè)柵格圖層的樣式(即拉伸的顏色),并分別以.lyr格式導(dǎo)出這23個(gè)柵格圖層文件;且希望導(dǎo)出圖層文件的文件名包含具體的時(shí)刻。如下圖所示。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

??第二點(diǎn)希望做到的是,將每一個(gè)柵格圖層都設(shè)置為彩色后,添加圖名、指北針、比例尺等地圖要素,并導(dǎo)出為圖片格式。以當(dāng)日10時(shí)、20時(shí)為例,我們所希望導(dǎo)出的圖片如下所示。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

??且希望導(dǎo)出圖片的文件名同樣包含具體的時(shí)刻。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

2 代碼實(shí)現(xiàn)

??了解了需求后,我們就基于Python中的ArcPy模塊,進(jìn)行詳細(xì)代碼的撰寫與介紹。

??這里需要說(shuō)明的是:在編寫代碼的時(shí)候,為了方便執(zhí)行,所以希望代碼后期可以在ArcMap中直接通過(guò)工具箱運(yùn)行,即用到Python程序腳本新建工具箱與自定義工具的方法;因此,代碼中對(duì)于一些需要初始定義的變量,都用到了arcpy.GetParameterAsText()函數(shù)。大家如果只是希望在IDLE中運(yùn)行代碼,那么直接對(duì)這些變量進(jìn)行具體賦值即可。關(guān)于Python程序腳本新建工具箱與自定義工具,大家可以查看ArcMap將Python寫的代碼轉(zhuǎn)為工具箱與自定義工具詳細(xì)了解。

??上面提到需要初始定義的變量一共有七個(gè),其中arcpy.env.workspace參數(shù)表示當(dāng)前工作空間;mxd_file參數(shù)表示后期批量出圖時(shí),提供地圖要素參考信息的地圖文檔.mxd文件;lyr_file參數(shù)表示后期批量出圖時(shí),提供地圖著色參考信息的模板圖層.lyr文件;mask_path參數(shù)表示前述插值柵格圖層所保存的路徑;new_lyr_path參數(shù)表示插值柵格圖層經(jīng)過(guò)樣式修改,并轉(zhuǎn)為圖層文件后的保存路徑;png_path參數(shù)表示最終出圖結(jié)果的保存路徑;dpi參數(shù)表示最終出圖結(jié)果的圖像分辨率,單位為DPI(Dots per Inch)。

??其中,上述第二個(gè)參數(shù),即提供地圖要素參考信息的地圖文檔.mxd文件需要由用戶自行創(chuàng)建,并在其中配置好圖名、圖例、指北針、比例尺等地圖要素的名稱、文本、位置、樣式等信息?;蛟S這么說(shuō)有點(diǎn)不清楚,大家看下面這幅圖就能比較容易明白了。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

??沒(méi)錯(cuò),這個(gè)提供地圖要素參考信息的地圖文檔.mxd文件其實(shí)就是一個(gè)在Layout View中設(shè)置好各種地圖要素位置、大小、字體、顏色等的地圖文檔文件;它就相當(dāng)于是一個(gè)模板,這個(gè)模板里各種地圖要素長(zhǎng)什么樣子,后期我們批量出圖結(jié)果圖的地圖要素就長(zhǎng)什么樣子。

??此外,不知道為什么,在我的ArcMap中似乎偶爾會(huì)出現(xiàn)無(wú)法有效執(zhí)行lyr.visible=Falsearcpy.mapping.RemoveLayer(data_frame,new_lyr[0])等代碼情況;因此若直接在上述地圖文檔文件中配置圖例,最終出圖結(jié)果有時(shí)會(huì)出現(xiàn)多個(gè)圖例堆疊,不能保證出圖結(jié)果百分之百完美?;诖?,選擇將圖例格式元素(elm.name==”title”)轉(zhuǎn)換為由一個(gè)圖片格式元素(elm.name==”pic”)與兩個(gè)文本格式元素(elm.name==”text”)組成的新元素,從而實(shí)現(xiàn)最終結(jié)果圖中圖例的繪制。

??如果大家還是不明白,可以直接下載我的這一.mxd文件;下載鏈接:https://pan.baidu.com/s/18l0l-kjPfdjV1UYcpkKg-w?pwd=fkxx 。

??具體代碼如下。

# -*- coding: utf-8 -*-
# @author: ChuTianjia

import arcpy

arcpy.env.workspace=arcpy.GetParameterAsText(0)
mxd_file=arcpy.GetParameterAsText(1)
lyr_file=arcpy.GetParameterAsText(2)
mask_path=arcpy.GetParameterAsText(3)
new_lyr_path=arcpy.GetParameterAsText(4)
png_path=arcpy.GetParameterAsText(5)
dpi=arcpy.GetParameterAsText(6)

my_mxd=arcpy.mapping.MapDocument(mxd_file)
data_frame=arcpy.mapping.ListDataFrames(my_mxd)[0]
my_lyr=arcpy.mapping.Layer(lyr_file)
layer_list=arcpy.mapping.ListLayers(my_mxd)

my_mxd.activeView="PAGE_LAYOUT"

tif_file_list=arcpy.ListRasters("BJ_hour_*","TIF")
for raster in tif_file_list:
    # Import the mask layer into ArcMap
    raster_file=mask_path+"\\"+raster
    arcpy.MakeRasterLayer_management(raster_file,raster.strip(".tif"))

    # Modify the style of the mask layer according to the reference layer
    arcpy.ApplySymbologyFromLayer_management(raster.strip(".tif"),lyr_file)
    new_lyr_file=new_lyr_path+"\\"+raster.strip(".tif")+".lyr"

    # Save and import the mask layer after modifying the style
    arcpy.SaveToLayerFile_management(raster.strip(".tif"),new_lyr_file)
    arcpy.AddMessage("{0} has been saved.".format(raster.strip(".tif")+".lyr"))
    
    new_lyr=arcpy.mapping.Layer(new_lyr_file)
    arcpy.mapping.AddLayer(data_frame,new_lyr,"TOP")

    # Modify the image name
    for element in arcpy.mapping.ListLayoutElements(my_mxd,"TEXT_ELEMENT"):
        if element.name=="title":
            element.text="Interpolation Map of PM2.5 Concentration\n at {0}:00 on May 18, 2019, Beijing".format(raster[8:10])

    new_lyr.visible=True

    # Modify the legend (see the program usage document for details)
    max_pixel=arcpy.GetRasterProperties_management(new_lyr,"MAXIMUM").getOutput(0)[0:5]
    min_pixel=arcpy.GetRasterProperties_management(new_lyr,"MINIMUM").getOutput(0)[0:5]
    for element in arcpy.mapping.ListLayoutElements(my_mxd,"TEXT_ELEMENT"):
        if element.name=="MAX":
            element.text="{:0>5.2f}".format(float(max_pixel))
        if element.name=="MIN":
            element.text="{:0>5.2f}".format(float(min_pixel))

    # Export to picture format
    png_file=png_path+"\\"+raster.strip(".tif")+".png"
    arcpy.mapping.ExportToPNG(my_mxd,png_file,resolution=dpi)
    arcpy.AddMessage("{0} has been saved.".format(raster.strip(".tif")+".png"))
    
    new_lyr.visible=False
    arcpy.mapping.RemoveLayer(data_frame,new_lyr[0])

3 運(yùn)行結(jié)果

??執(zhí)行上述代碼,具體得到的結(jié)果其實(shí)在本文開(kāi)頭也就和大家講了,這里就不再贅述。

??不過(guò)還有一點(diǎn),就是如果大家是在ArcMap中直接通過(guò)工具箱運(yùn)行上述代碼,則可以看到代碼運(yùn)行過(guò)程中出現(xiàn)的提示——程序運(yùn)行過(guò)程中,對(duì)每一個(gè)時(shí)刻的PM2.5濃度數(shù)據(jù)分別完成圖層格式保存與圖片格式保存等2個(gè)操作后,均會(huì)輸出執(zhí)行結(jié)果,方便用戶獲知程序的執(zhí)行情況。

ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python

??至此,大功告成。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855348.html

到了這里,關(guān)于ArcPy自動(dòng)繪制大量地圖并設(shè)置地圖要素:Python的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【QT--使用百度地圖API顯示地圖并繪制路線】

    【QT--使用百度地圖API顯示地圖并繪制路線】

    先吐槽一下下,本身qt學(xué)的就不咋滴,誰(shuí)想到第一件事就是讓寫一個(gè)上位機(jī)工具,根據(jù)CAN總線傳來(lái)的位置信息,在地圖上去繪制路線,并獲取當(dāng)前路段的限速信息等。當(dāng)聽(tīng)到這個(gè)需求的時(shí)候,第一時(shí)間是有點(diǎn)懵逼的。自己原本是沒(méi)接觸過(guò)這方面的知識(shí),而且qt學(xué)的也特別的垃圾

    2024年01月24日
    瀏覽(96)
  • Python 地圖篇 - 使用pyecharts繪制世界地圖、中國(guó)地圖、省級(jí)地圖、市級(jí)地圖實(shí)例詳解

    Python 地圖篇 - 使用pyecharts繪制世界地圖、中國(guó)地圖、省級(jí)地圖、市級(jí)地圖實(shí)例詳解

    [ 系列文章篇 ] 2022 見(jiàn)證中國(guó)崛起從 Python 繪制中國(guó)地圖開(kāi)始:使用 pyecharts 最新版本繪制中國(guó)地圖實(shí)例詳解,個(gè)性化地圖定制及常用參數(shù)解析 [ 專欄推薦 ] Python 短視頻自動(dòng)化發(fā)布,包含抖音、快手、 bilibili 、小紅書(shū)、微視、好看視頻、西瓜視頻、視頻號(hào)等 10 余種平臺(tái) 先給大

    2024年02月03日
    瀏覽(25)
  • Python繪制中國(guó)地圖

    Python繪制中國(guó)地圖

    ?1. 導(dǎo)入庫(kù) 2. 導(dǎo)入數(shù)據(jù) 3. 南海九段線部分?jǐn)?shù)據(jù)預(yù)處理 開(kāi)始繪圖之前需進(jìn)行數(shù)據(jù)選擇,即中國(guó)區(qū)域的數(shù)據(jù),特別是繪制南海小地圖的更需要,可避免一些問(wèn)題(小地圖上方出現(xiàn)完整地圖) 4. 定義掩膜方法,從全球的nc數(shù)據(jù)中,裁出中國(guó)地圖部分的數(shù)據(jù)(根據(jù)shp文件裁剪nc數(shù)據(jù))

    2024年02月06日
    瀏覽(24)
  • echarts繪制3D地圖

    echarts繪制3D地圖

    echarts繪制3D地圖實(shí)現(xiàn)平移、縮放 所需依賴 ?準(zhǔn)備工作:main.js中引入依賴 ? 先上圖 代碼直接復(fù)制粘貼就可以使用了,根據(jù)自己需求稍作修改就可以使用了 ?html代碼部分 js代碼部分 繪制3D地圖可能會(huì)引起地圖上標(biāo)注點(diǎn),跟所需點(diǎn)有偏差的情況,這樣需要去修改引用的json文件

    2024年02月11日
    瀏覽(30)
  • Python繪制世界疫情地圖

    Python繪制世界疫情地圖

    世界疫情數(shù)據(jù)下載: 方法一:關(guān)注微信公眾號(hào) 大數(shù)據(jù)智庫(kù) (公眾號(hào)二維碼在我的主頁(yè)左下角),回復(fù)疫情數(shù)據(jù),即可獲取網(wǎng)盤鏈接 方法二:在gitee上面下載》》點(diǎn)擊:疫情數(shù)據(jù)下載 注:此數(shù)據(jù)是2022年3月12號(hào)的結(jié)果,其中透明的地方代表確診人數(shù)小于10萬(wàn)人,白色的地方代表

    2023年04月27日
    瀏覽(24)
  • vue使用Echarts繪制地圖

    vue使用Echarts繪制地圖

    ? 大致實(shí)現(xiàn)就是這個(gè)效果,鼠標(biāo)滑過(guò)的時(shí)候會(huì)顯示該區(qū)域的一個(gè)信息,加上自定義的顯示圖標(biāo) 有需要希望可以幫到各位 目錄 一、在vue中引入Echarts? 二、下載并引入china.json文件 三、準(zhǔn)備html容器、css中給圖表需要的寬高 四、完整代碼 這個(gè)可以看Echarts官方文檔,按照步驟一步

    2024年02月09日
    瀏覽(19)
  • 高德地圖繪制 GPX 數(shù)據(jù)路線

    高德地圖繪制 GPX 數(shù)據(jù)路線

    重要! 高德地圖 js api 文檔: https://lbs.amap.com/api/javascript-api-v2/documentation 你所有需要知道的關(guān)于 AMap 的所有對(duì)象,及其屬性、方法、事件都在這里面寫明白了。 .gpx 文件是在分享地圖路徑時(shí)最常用的一種數(shù)據(jù)格式。里面包含了路徑點(diǎn)的相關(guān)信息,每個(gè)點(diǎn)還有可能擁有自己的時(shí)

    2024年01月19日
    瀏覽(21)
  • VUE+echart繪制地圖(3D)

    VUE+echart繪制地圖(3D)

    上一篇分享了一個(gè)偽3D的地圖,這次我們搞一個(gè)真實(shí)的3D地圖。 效果圖如下: 要實(shí)現(xiàn)這種效果,首先得引入兩個(gè)不同的依賴: echarts-liquidfill和echarts-gl,引入很簡(jiǎn)單: 引入后開(kāi)始我們的編碼工作: template 部分: js部分: 按照步驟來(lái)就可以實(shí)現(xiàn)和效果圖相同的效果,同理,也

    2024年02月11日
    瀏覽(43)
  • 獲取街道、鄉(xiāng)鎮(zhèn)級(jí)的地圖geoJson數(shù)據(jù),使用echarts繪制地圖

    獲取街道、鄉(xiāng)鎮(zhèn)級(jí)的地圖geoJson數(shù)據(jù),使用echarts繪制地圖

    在此以泰州靖江市為例為例,記錄一下實(shí)現(xiàn)過(guò)程 1、整體完成后實(shí)現(xiàn)的效果如下 2、獲取數(shù)據(jù) (1) DataV.GeoAtlas 第一個(gè)能想到的獲取數(shù)據(jù)的網(wǎng)站就是它, 是阿里推出的一個(gè)用于獲取全國(guó)、各省、各市以及個(gè)縣級(jí)市詳細(xì)地圖信息的json文件 http://datav.aliyun.com/portal/school/atlas/area_s

    2024年02月09日
    瀏覽(23)
  • matlab奇技淫巧——繪制三維地圖

    matlab奇技淫巧——繪制三維地圖

    ??在數(shù)據(jù)處理工作中,常常會(huì)用到地圖的繪制,最常用的自然是繪制平面的區(qū)域/全球地圖,通過(guò) 即可繪制,效果如下,其中經(jīng)度為 ? 180 ~ 180 -180sim180 ? 180 ~ 180 ,負(fù)為西經(jīng),正為東經(jīng),緯度為 ? 90 ~ 90 -90sim90 ? 90 ~ 90 ,北緯為正,南緯為負(fù)。 ??不過(guò)本博文題目

    2024年02月07日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包