欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

基于Python+GDAL實(shí)現(xiàn)nc格式轉(zhuǎn)geotiff格式

系統(tǒng) 4757 0

基于Python+GDAL實(shí)現(xiàn)nc格式轉(zhuǎn)geotiff格式

        • 1. 目的
        • 2. 版本
        • 3. 基礎(chǔ)知識
          • ?3.1 什么是nc文件?
          • ?3.2 基于Python處理nc文件需要用到的庫
        • 4. 程序示例
        • 5. 問題
          • ? 5.1 影像分辨率的設(shè)置
        • 參考資料

1. 目的

(1)掌握基于Python處理nc格式文件的基本方法
(2)學(xué)會將程序函數(shù)化,提高程序可讀性【待補(bǔ)充】

2. 版本

(1)2019年6月20日; ? ?Version 1

3. 基礎(chǔ)知識

?3.1 什么是nc文件?

??NetCDF(network Common Data Form)網(wǎng)絡(luò)通用數(shù)據(jù)格式是由美國大學(xué)大氣研究協(xié)會(University Corporation for Atmospheric Research,UCAR)的Unidata項(xiàng)目科學(xué)家針對科學(xué)數(shù)據(jù)的特點(diǎn)開發(fā)的,是一種面向數(shù)組型并適于網(wǎng)絡(luò)共享的數(shù)據(jù)的描述和編碼標(biāo)準(zhǔn)。目前,NetCDF廣泛應(yīng)用于大氣科學(xué)、水文、海洋學(xué)、環(huán)境模擬、地球物理等諸多領(lǐng)域。用戶可以借助多種方式方便地管理和操作NetCDF 數(shù)據(jù)集 [1]

?3.2 基于Python處理nc文件需要用到的庫

??基于Python處理nc數(shù)據(jù)必要的庫是 netCDF4 ,同時如果需要將nc文件轉(zhuǎn)換為tiff文件,還需要osgeo庫中的gdal子庫和osr子庫。

4. 程序示例

??以Python將nc格式的標(biāo)準(zhǔn)化降水蒸散發(fā)指數(shù)(SPEI)文件轉(zhuǎn)換為tif格式的文件為例,說明nc轉(zhuǎn)tif的python實(shí)現(xiàn)過程,SPEI數(shù)據(jù)下載自西班牙國家研究委員會(CSIC)下屬的SPEI下載網(wǎng)站 [2]

            
              
                '''
 1. 目的:基于Python將.nc文件轉(zhuǎn)換為.tif文件
 2. 山東青島  2019年6月20日
'''
              
              
                # 0. 模塊導(dǎo)入
              
              
                import
              
               numpy 
              
                as
              
               np

              
                import
              
               netCDF4 
              
                as
              
               Dataset

              
                from
              
               osgeo 
              
                import
              
               gdal
              
                ,
              
              osr


              
                # 1. 路徑處理和變量定義
              
              
RootDir 
              
                =
              
               r
              
                'F:\SPEI_NC'
              
              
SPEI_NC 
              
                =
              
               RootDir 
              
                +
              
              
                '\\spei12.nc'
              
              
                # 輸入文件
              
              
                # 1.1 輸出路徑-OutPath
              
              
OutPath 
              
                =
              
               RootDir 
              
                +
              
              
                '\\SPEI_TIF'
              
              
                if
              
               os
              
                .
              
              path
              
                .
              
              exists
              
                (
              
              OutPath
              
                )
              
              
                :
              
              
    shutil
              
                .
              
              rmtree
              
                (
              
              OutPath
              
                )
              
              
    os
              
                .
              
              mkdir
              
                (
              
              OutPath
              
                )
              
              
                else
              
              
                :
              
              
    os
              
                .
              
              mkdir
              
                (
              
              OutPath
              
                )
              
              
OutTif 
              
                =
              
               OutPath 
              
                +
              
              
                '\\Global_SPEI_Test.tif'
              
              
                # 2. NetCDF文件處理
              
              
NC_DS 
              
                =
              
               Dataset
              
                (
              
              SPEI_NC
              
                )
              
              
                print
              
              
                (
              
              NC_DS
              
                ,
              
              
                type
              
              
                (
              
              NC_DS
              
                )
              
              
                )
              
              
                # 了解NC_DS的數(shù)據(jù)類型,
                
              
              
                print
              
              
                (
              
              NC_DS
              
                .
              
              variables
              
                )
              
              
                # 了解變量的基本信息
              
              
                print
              
              
                (
              
              NC_DS
              
                .
              
              variables
              
                [
              
              
                'spei'
              
              
                ]
              
              
                )
              
              
                # 了解SPEI的基本信息
              
              
Lat 
              
                =
              
               NC_DS
              
                .
              
              variables
              
                [
              
              
                'lat'
              
              
                ]
              
              
                [
              
              
                :
              
              
                ]
              
              
Lon 
              
                =
              
               NC_DS
              
                .
              
              variables
              
                [
              
              
                'Lon'
              
              
                ]
              
              
                [
              
              
                :
              
              
                ]
              
              
SPEI 
              
                =
              
               NC_DS
              
                .
              
              variables
              
                [
              
              
                'spei'
              
              
                ]
              
              
                [
              
              
                13
              
              
                ,
              
              
                :
              
              
                ,
              
              
                :
              
              
                ]
              
              
                # 1901年1月的SPEI_12,注意SPEI的存儲形式?jīng)Q定了讀取方式
              
              
                print
              
              
                (
              
              
                type
              
              
                (
              
              SPEI
              
                )
              
              
                ,
              
              SPEI
              
                .
              
              shape
              
                )
              
              
                # 了解SPEI的數(shù)據(jù)類型,和維數(shù)
              
              
                # 2.1 異常值處理
              
              
SPEI 
              
                =
              
               np
              
                .
              
              asarray
              
                (
              
              SPEI
              
                )
              
              
                # 數(shù)據(jù)類型轉(zhuǎn)換
              
              
SPEI
              
                [
              
              np
              
                .
              
              where
              
                (
              
              SPEI 
              
                ==
              
              
                1.e+30
              
              
                )
              
              
                ]
              
              
                =
              
              
                -
              
              
                99
              
              
                # 3. 將數(shù)據(jù)寫出到.tif文件中
              
              
                # 3.1 影像的左上角和右下角坐標(biāo)
              
              
LonMin
              
                ,
              
              LatMax
              
                ,
              
              LonMax
              
                ,
              
              LatMin 
              
                =
              
              
                [
              
              Lon
              
                .
              
              
                min
              
              
                (
              
              
                )
              
              
                ,
              
              Lat
              
                .
              
              
                max
              
              
                (
              
              
                )
              
              
                ,
              
              Lon
              
                .
              
              
                max
              
              
                (
              
              
                )
              
              
                ,
              
              Lat
              
                .
              
              
                min
              
              
                (
              
              
                )
              
              
                ]
              
              
                # 3.2 影像的分辨率,此處float(N_Lon)-1是為了保證分辨率為0.5 degree,不知是否合理,望指正
              
              
N_Lat 
              
                =
              
              
                len
              
              
                (
              
              Lat
              
                )
              
               
N_Lon 
              
                =
              
              
                len
              
              
                (
              
              Lon
              
                )
              
              
Lon_Res 
              
                =
              
              
                (
              
              LonMax 
              
                -
              
               LonMin
              
                )
              
              
                /
              
              
                (
              
              
                float
              
              
                (
              
              N_Lon
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
Lat_Res 
              
                =
              
              
                (
              
              LatMax 
              
                -
              
               LatMin
              
                )
              
              
                /
              
              
                (
              
              
                float
              
              
                (
              
              N_Lat
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
                # 3.3 構(gòu)建.tiff文件框架
              
              
spei_ds 
              
                =
              
               gdal
              
                .
              
              GetDriverByName
              
                (
              
              
                'Gtiff'
              
              
                )
              
              
                .
              
              Create
              
                (
              
              OutTif
              
                ,
              
              N_Lon
              
                ,
              
              N_Lat
              
                ,
              
              
                1
              
              
                ,
              
              gdal
              
                .
              
              GDT_Float32
              
                )
              
              
                # 3.4 設(shè)置影像的顯示范圍
              
              
geotransform 
              
                =
              
              
                (
              
              LonMin
              
                ,
              
              Lon_Res
              
                ,
              
              
                0
              
              
                ,
              
               LatMin
              
                ,
              
              
                0
              
              
                ,
              
               Lat_Res
              
                )
              
              
spei_ds
              
                .
              
              SetGeoTransform
              
                (
              
              geotransform
              
                )
              
              
                # 3.5 地理坐標(biāo)系統(tǒng)信息
              
              
srs 
              
                =
              
               osr
              
                .
              
              SpatialReference
              
                (
              
              
                )
              
              
                #獲取地理坐標(biāo)系統(tǒng)信息,用于選取需要的地理坐標(biāo)系統(tǒng)
              
              
                print
              
              
                (
              
              
                type
              
              
                (
              
              srs
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              srs
              
                )
              
              
srs
              
                .
              
              ImportFromEPSG
              
                (
              
              
                4326
              
              
                )
              
              
                # 定義輸出的坐標(biāo)系為"WGS 84",AUTHORITY["EPSG","4326"]
              
              
spei_ds
              
                .
              
              SetProjection
              
                (
              
              srs
              
                .
              
              ExportToWkt
              
                (
              
              
                )
              
              
                )
              
              
                # 給新建圖層賦予投影信息
              
              
                # 3.6 數(shù)據(jù)寫出
              
              
spei_ds
              
                .
              
              GetRasterBand
              
                (
              
              
                1
              
              
                )
              
              
                .
              
              WriteArray
              
                (
              
              SPEI
              
                )
              
              
                # 將數(shù)據(jù)寫入內(nèi)存,此時沒有寫入硬盤
              
              
spei_ds
              
                .
              
              FlushCache
              
                (
              
              
                )
              
              
                # 將數(shù)據(jù)寫入硬盤
              
              
spei_ds 
              
                =
              
              
                None
              
              
                # 關(guān)閉spei_ds指針,注意必須關(guān)閉
              
              
                print
              
              
                (
              
              
                'Finished'
              
              
                )
              
            
          

5. 問題

? 5.1 影像分辨率的設(shè)置
            
              
                # 3.2 影像的分辨率,此處float(N_Lon)-1是為了保證分辨率為0.5 degree,不知是否合理,望指正
              
              
N_Lat 
              
                =
              
              
                len
              
              
                (
              
              Lat
              
                )
              
               
N_Lon 
              
                =
              
              
                len
              
              
                (
              
              Lon
              
                )
              
              
Lon_Res 
              
                =
              
              
                (
              
              LonMax 
              
                -
              
               LonMin
              
                )
              
              
                /
              
              
                (
              
              
                float
              
              
                (
              
              N_Lon
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
Lat_Res 
              
                =
              
              
                (
              
              LatMax 
              
                -
              
               LatMin
              
                )
              
              
                /
              
              
                (
              
              
                float
              
              
                (
              
              N_Lat
              
                )
              
              
                -
              
              
                1
              
              
                )
              
            
          

參考資料

[1] : netCDF百度百科
[2] : MATLAB中利用ncread函數(shù)讀取nc文件


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 二区在线视频 | 亚洲精品在线91 | 亚洲av毛片成人精品 | 欧美一区免费 | 国产免费一区二区三区免费视频 | 色综合欧美 | 舒淇三级浴室洗澡在线观看 | 久在线观看视频 | 夜夜夜操操操 | 久久综合一区二区 | 国产精品久久久久久久久久久新郎 | 91精品国产露脸在线观看 | 国产在线不卡午夜精品2021 | 在线国产一区二区 | 国产精品人成福利视频 | 亚洲AV国产成人精品区三上 | 碰碰碰精品视频在线观看 | 日本高清电影在线播放 | 欧美 日韩 | 一类黄色大片 | 嘿咻嘿咻免费区在线观看吃奶 | 国产免费又色又爽又黄的网站 | av成人免费在线观看 | 国产精品精品视频 | 一区二区三区四区国产精品视频 | 日韩在线观看视频一区 | 日韩a无v码在线播放免费 | 精品一区二区久久久久久久网站 | 欧美9999 | 精品综合| 午夜精品视频在线 | cheaperapp.work直接访问 | ppp42.com| 2019中文字幕视频 | 狠狠色噜噜狠狠狠狠97影音先锋 | 91高清在线成人免费观看 | 久久99国产伦子精品免费 | 精品国产18久久久久久二百 | 国产区在线 | 天天爽天天色 | 亚洲aaa视频 |