python將nc檔案轉為tiff

2021-10-08 22:01:35 字數 1498 閱讀 4144

import numpy as np

import netcdf4 as nc

from osgeo import gdal,osr

var = 'sa'

data = r'c:\users\13290\desktop\soil data\{}.nc'.format(var)

f = nc.dataset(data)

var_lon = f['lon'][:]

var_lat = f['lat'][:]

data = f[var][0, :]

data_arr = np.asarray(data)

data_arr = data_arr[::-1] # 因為我的資料維度是正序排列,需要逆序一下

# 影像的左上角和右下角座標

lonmin, latmax, lonmax, latmin = [var_lon.min(), var_lat.max(), var_lon.max(), var_lat.min()]

# 解析度計算

n_lat = len(var_lat)

n_lon = len(var_lon)

lon_res = (lonmax - lonmin) / (float(n_lon) - 1)

lat_res = (latmax - latmin) / (float(n_lat) - 1)

# 建立.tif檔案

driver = gdal.getdriverbyname('gtiff')

out_tif_name = r'c:\users\13290\desktop\soil data\{}.tif'.format(var)

out_tif = driver.create(out_tif_name, n_lon, n_lat, 1, gdal.gdt_float32) # 建立框架

# 設定影像的顯示範圍

# lat_res一定要是-的

geotransform = (lonmin, lon_res, 0, latmax, 0, -lat_res)

out_tif.setgeotransform(geotransform)

# 獲取地理座標系統資訊,用於選取需要的地理座標系統

srs = osr.spatialreference()

srs.importfromepsg(4326) # 定義輸出的座標係為"wgs 84",authority["epsg","4326"]

out_tif.setprojection(srs.exporttowkt()) # 給新建圖層賦予投影資訊

# 資料寫出

out_tif.getrasterband(1).writearray(data_arr) # 將資料寫入記憶體,此時沒有寫入硬碟

out_tif.flushcache() # 將資料寫入硬碟

out_tif = none # 注意必須關閉tif檔案

參考部落格python處理netcdf格式資料為tiff資料(附指令碼**)

python將arff檔案轉為csv檔案

資料集有可能是以arff格式 weka用的 儲存,一般的機器學習使用numpy,pandas和sklearn多一些,無法直接讀取檔案,所以需要scipy.io.arff.loadarff過渡下。from scipy.io import arff import pandas as pd file na...

python3 將pdf檔案轉為text

pdf檔案儘管可以用python提取文字,但存在加密的情況,那種pdf就是解析不了的。另外pdf更類似於,所以即使可以用python提取,結果也容易有問題。所以效果不敢保證。在python3中解析pdf一般用pdfminer3k,就是pdfminer的python3版本。直接pip安裝即可 pip ...

python讀寫nc檔案

參考自 讀nc檔案需要用到netcdf4 import netcdf4 as nc 開啟nc檔案 nc obj nc.dataset c users kong pycharmprojects replacencl meow 看看nc檔案中有甚麼 print nc obj root group net...