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...