国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 11:00:54
字體:
來源:轉載
供稿:網友

我是以Python開門的,我還是覺得Python也可以進行地形三維可視化,當然這里需要借助第三方庫,so,我就來介紹:Python一個很重要可視化插件,Matplotlib。

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

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

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

講這份數據,輸入編寫好的相關路徑,然后經過簡單的三維渲染:

Matplotlib只是一個可視化包,不能直接識別柵格數據,所以這邊還用到另外一個包---gdal,開源柵格空間數據轉換庫,他的本體竟然還是c++,也開放了一個Python框架,這算是向Python投誠嘛?

好吧,開源一下用Matplotlib和gdal包進行地形三維可視化的小腳本:

# -*- coding: gbk -*-from mpl_toolkits.mplot3d import Axes3Dfrom Matplotlib import cbookfrom Matplotlib import cmfrom Matplotlib.colors import LightSourceimport Matplotlib.pyplot as pltimport numpy as npfrom osgeo import gdalgdal.AllRegister()filePath = u"E:/桌面/dem實驗/Himalaya.tif" #輸入你的dem數據dataset = gdal.Open(filePath)adfGeoTransform = dataset.GetGeoTransform()band = dataset.GetRasterBand(1)  #用gdal去讀寫你的數據,當然dem只有一個波段nrows = dataset.RasterXSize ncols  = dataset.RasterYSize  #這兩個行就是讀取數據的行列數Xmin = adfGeoTransform[0] #你的數據的平面四至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) #這一段就是講數據的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)  #設置你可視化數據的色帶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() #最后渲染出你好看的三維圖吧            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新化县| 叙永县| 沙田区| 府谷县| 通州区| 龙川县| 高陵县| 宜城市| 禹城市| 南通市| 宣汉县| 土默特右旗| 枞阳县| 改则县| 昌宁县| 沅江市| 苍溪县| 黔西县| 无为县| 余姚市| 常山县| 苏尼特右旗| 永昌县| 聂拉木县| 尚义县| 犍为县| 宜春市| 左权县| 芦山县| 沽源县| 公安县| 泸水县| 石柱| 布尔津县| 邵阳市| 穆棱市| 武强县| 延川县| 凤凰县| 沛县| 广河县|