最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的地形三維可視化Matplotlib和gdal使用實(shí)例

 更新時(shí)間:2017年12月09日 14:42:36   作者:大蝦盧  
這篇文章主要介紹了Python的地形三維可視化Matplotlib和gdal使用實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以了解下。

我是以Python開(kāi)門的,我還是覺(jué)得Python也可以進(jìn)行地形三維可視化,當(dāng)然這里需要借助第三方庫(kù),so,我就來(lái)介紹:Python一個(gè)很重要可視化插件,Matplotlib。

Matplotlib是Python最著名的繪圖庫(kù),它提供了一整套友好的命令,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。你會(huì)發(fā)現(xiàn)Matplotlib和matlab相似,但是你知道m(xù)atlab強(qiáng)大是很強(qiáng)大,但是安裝包就有7G,一下就讓我失去玩弄他的興趣。

Matplotlib的二維圖形非常成熟,可以做各種各樣的報(bào)表,比如:

好吧,額,....... Matplotlib當(dāng)然也可以做3維數(shù)據(jù)。首先準(zhǔn)備了一份樣例,珠穆朗姆峰周圍地勢(shì)的dem數(shù)據(jù),我在arcsense進(jìn)行拉伸顯示,初步看看效果:

講這份數(shù)據(jù),輸入編寫好的相關(guān)路徑,然后經(jīng)過(guò)簡(jiǎn)單的三維渲染:

Matplotlib只是一個(gè)可視化包,不能直接識(shí)別柵格數(shù)據(jù),所以這邊還用到另外一個(gè)包---gdal,開(kāi)源柵格空間數(shù)據(jù)轉(zhuǎn)換庫(kù),他的本體竟然還是c++,也開(kāi)放了一個(gè)Python框架,這算是向Python投誠(chéng)嘛?

好吧,開(kāi)源一下用Matplotlib和gdal包進(jìn)行地形三維可視化的小腳本:

# -*- coding: gbk -*-
from mpl_toolkits.mplot3d import Axes3D
from Matplotlib import cbook
from Matplotlib import cm
from Matplotlib.colors import LightSource
import Matplotlib.pyplot as plt
import numpy as np
from osgeo import gdal
gdal.AllRegister()

filePath = u"E:\桌面\dem實(shí)驗(yàn)/Himalaya.tif" #輸入你的dem數(shù)據(jù)
dataset = gdal.Open(filePath)
adfGeoTransform = dataset.GetGeoTransform()
band = dataset.GetRasterBand(1)  #用gdal去讀寫你的數(shù)據(jù),當(dāng)然dem只有一個(gè)波段
nrows = dataset.RasterXSize 
ncols  = dataset.RasterYSize  #這兩個(gè)行就是讀取數(shù)據(jù)的行列數(shù)
Xmin = adfGeoTransform[0] #你的數(shù)據(jù)的平面四至
Ymin = adfGeoTransform[3]
Xmax = adfGeoTransform[0] + nrows * adfGeoTransform[1] + ncols * adfGeoTransform[2]
Ymax = adfGeoTransform[3] + nrows * adfGeoTransform[4] + ncols * adfGeoTransform[5]
x = np.linspace(Xmin,Xmax, ncols)
y = np.linspace(Ymin,Ymax, nrows)
X,Y = np.meshgrid(x, y)
Z = band.ReadAsArray(0, 0,nrows, ncols) #這一段就是講數(shù)據(jù)的x,y,z化作numpy矩陣
region = np.s_[10:400,10:400]
X, Y, Z = X[region], Y[region],Z[region]
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'), figsize=(12,10))
ls = LightSource(270, 20)  #設(shè)置你可視化數(shù)據(jù)的色帶
rgb = ls.shade(Z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=rgb,
            linewidth=0, antialiased=False, shade=False)
plt.show() #最后渲染出你好看的三維圖吧

最后是蝦神的話:GDAL在python里面的安裝,屬于灰常糾結(jié)的事情,運(yùn)氣好(人品好)可能一下就成功,運(yùn)氣不好,可能死活就裝不上……如果遇上死活裝不上的,可以考慮用MinGW自己進(jìn)行編譯。

如果不想用gdal來(lái)實(shí)現(xiàn)以上效果,可以考慮用arcpy的RasterToNumpy來(lái)把tif文件讀成矩陣,也可以實(shí)現(xiàn)。

總結(jié)

以上就是本文關(guān)于Python的地形三維可視化Matplotlib和gdal使用實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Python中獲取文件大小的四種辦法

    Python中獲取文件大小的四種辦法

    這篇文章主要給大家介紹了關(guān)于Python中獲取文件大小的四種辦法,我們可以使用Python中的os模塊來(lái)獲取視頻文件大小,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 一起來(lái)了解python的基本輸入和輸出

    一起來(lái)了解python的基本輸入和輸出

    這篇文章主要為大家詳細(xì)介紹了python的基本輸入和輸出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Python爬蟲實(shí)例——爬取美團(tuán)美食數(shù)據(jù)

    Python爬蟲實(shí)例——爬取美團(tuán)美食數(shù)據(jù)

    這篇文章主要介紹了Python爬蟲如何爬取美團(tuán)美食數(shù)據(jù),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Django?使用VScode?創(chuàng)建工程的詳細(xì)步驟

    Django?使用VScode?創(chuàng)建工程的詳細(xì)步驟

    這篇文章主要介紹了Django?使用VScode?創(chuàng)建工程,創(chuàng)建Django 項(xiàng)目,可以和虛擬環(huán)境放在同一目錄,也可以放在虛擬環(huán)境的文件夾里,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Python實(shí)現(xiàn)連接MySQL數(shù)據(jù)庫(kù)的常見(jiàn)方法總結(jié)

    Python實(shí)現(xiàn)連接MySQL數(shù)據(jù)庫(kù)的常見(jiàn)方法總結(jié)

    這篇文章主要為大家介紹了兩種Python中用來(lái)連接 MySQL 數(shù)據(jù)庫(kù)的方法,并且針對(duì)這兩種方法,我們還將對(duì)代碼進(jìn)行封裝和優(yōu)化,提高程序的可讀性和健壯性,需要的可以收藏一下
    2023-05-05
  • Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

    Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

    最近在學(xué)習(xí)Django,本文主要介紹了Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 解決Pandas生成Excel時(shí)的sheet問(wèn)題的方法總結(jié)

    解決Pandas生成Excel時(shí)的sheet問(wèn)題的方法總結(jié)

    估計(jì)有不少小伙伴在將 DataFrame導(dǎo)入到Excel的時(shí)候,遇到過(guò)下面這種尷尬的情況:想給一個(gè)現(xiàn)有的Excel文件追加一個(gè)sheet,結(jié)果發(fā)現(xiàn)其它的sheet都沒(méi)了等,本文就來(lái)告訴你如何解決這些問(wèn)題
    2022-08-08
  • Python3內(nèi)置模塊之json編解碼方法小結(jié)【推薦】

    Python3內(nèi)置模塊之json編解碼方法小結(jié)【推薦】

    這篇文章主要介紹了Python3內(nèi)置模塊之json編解碼方法小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python MySQLdb Linux下安裝筆記

    Python MySQLdb Linux下安裝筆記

    這篇文章主要介紹了Python MySQLdb Linux下安裝筆記,本文分別講解了快速安裝和手動(dòng)編譯安裝兩種方法,并分別講解了操作步驟,需要的朋友可以參考下
    2015-05-05
  • Python3對(duì)稱加密算法AES、DES3實(shí)例詳解

    Python3對(duì)稱加密算法AES、DES3實(shí)例詳解

    這篇文章主要介紹了Python3對(duì)稱加密算法AES、DES3,結(jié)合實(shí)例形式詳細(xì)分析了對(duì)稱加密算法AES、DES3相關(guān)模塊安裝、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12

最新評(píng)論

南雄市| 察隅县| 岳普湖县| 德安县| 波密县| 广州市| 蒲江县| 清远市| 武功县| 高唐县| 嵊州市| 宿松县| 鄯善县| 石狮市| 桐梓县| 屏南县| 水城县| 绵竹市| 公安县| 来宾市| 桦甸市| 张家界市| 贵州省| 深水埗区| 祁连县| 海城市| 西平县| 喀喇| 许昌市| 晴隆县| 吐鲁番市| 陈巴尔虎旗| 治县。| 拜泉县| 东平县| 政和县| 新昌县| 巧家县| 博爱县| 洞头县| 通江县|