基于Python的⽓象时空数据分析教程
⽬录
本项⽬根据进⾏翻译整理,译者:
数据上传⾄
获得代码运⾏环境,⼀键运⾏项⽬请点击>>
⼀、时空数据的常见格式
空间数据以许多不同的⽅式表⽰,并以不同的⽂件格式存储。本项⽬将重点介绍两种类型的空间数据:栅格数据和⽮量数据。
1. 常见格式的简介
栅格数据 :保存在统⼀格⽹中,并在地图上以像素的形式呈现。每个像素都包含⼀个表⽰地球表⾯上某个区域的值。
栅格常见格式:netCDF、TIF
⽮量数据:通常⽤于存储道路和地块位置、州、国家和湖泊边界等内容。由离散的⼏何位置(x,y 值)组成,这些位置称为顶点,⽤于定义空间对象的形状。
⽮量常见格式:shapefile、geojson
点:每个单独的点由单个 x、y 坐标定义。⽮量点⽂件中可以有许多点。点数据的⽰例包括:采样位置、单个树的位置或地块的位置。
线:线由许多(⾄少 2 个)连接的折点组成。例如,道路或溪流可以⽤⼀条线表⽰。这条线由⼀系列线段组成,道路或溪流中的每个"弯道"都表⽰⼀个已定义 x、y 位置的顶点。
多边形:多边形由 3 个或更多连接且"封闭"的顶点组成。通常由多边形表⽰的对象包括:绘图边界、湖泊、海洋以及州或国家边界的轮廓。
使⽤ shapefile 时,请务必记住,shapefile 由 3 个(或更多)⽂件组成:
.shp:包含所有要素的⼏何的⽂件。
.shx:为⼏何图形编制索引的⽂件。
.dbf:以表格格式存储要素属性的⽂件。
这些⽂件需要具有相同的名称并存储在同⼀⽬录(⽂件夹)中,才能在GIS,R或Python⼯具中正确打开。
有时,形状⽂件将具有其他关联的⽂件,包括:
.prj:包含投影格式信息的⽂件,包括坐标系和投影信息。它是⼀个使⽤已知⽂本 (WKT) 格式描述投影的纯⽂本⽂件。
.sbn 和 .sbx:作为要素的空间索引的⽂件。
.l:作为 XML 格式的地理空间元数据的⽂件(例如.ISO 19115 或 XML 格式)。
2. 常见格式的读取
导⼊模块
from netCDF4 import Dataset
import netCDF4 as nc
import matplotlib.pyplot as plt
from osgeo import gdal, ogr
气象python零基础入门教程from mpl_toolkits.basemap import Basemap
读取nc数据
f = nc.Dataset('/home/mw/input/metos8969/metos/MISR_AM1_CGLS_MAY_2007_F04_0031.hdf','r') print("Metadata for the dataset:")
print(f)
print("List of available variables (or key): ")
f.variables.keys()
print("Metadata for 'NDVI average' variable: ")
f.variables["NDVI average"]
f.close()
创建nc数据
# 创建nc⽂件及维度
f = nc.Dataset('', 'w')
lats = f.createVariable('lat', float, ('y', ), zlib=True)
lons = f.createVariable('lon', float, ('x', ), zlib=True)
orography = f.createVariable('orog', float, ('y', 'x'), zlib=True, least_significant_digit=1, fill_value=0) # 创建⼀维数组利兹大学language cert
lat_out  = [60, 65, 70, 75]
lon_out  = [ 30,  60,  90, 120, 150]
# 创建⼆维数组
data_out = np.arange(4*5)
data_out.shape = (4,5)
redhat密码忘了怎么办
orography[:] = data_out
lats[:] = lat_out
lons[:] = lon_out
# 关闭⽂件
f.close()
# 打开创建后的nc数据
f = nc.Dataset('', 'r')
print(f)
f.close()
# 输出nc⽂件的数值
f = nc.Dataset('', 'r')
lats = f.variables['lat']
lons = f.variables['lon']
orography = f.variables['orog']
print(lats[:])
print(lons[:])
print(orography[:])
f.close()
# nc⽂件的数值的切⽚打印
f = nc.Dataset('', 'r')
汇编语言第五版钱晓捷电子版lats = f.variables['lat']
lons = f.variables['lon']
js加密怎么破解orography = f.variables['orog']
print(lats[:])
print(lons[:])
print(orography[:][3,2])
f.close()
绘制nc数据
f = nc.Dataset('/home/mw/input/metos8969/metos/MISR_AM1_CGLS_MAY_2007_F04_0031.hdf','r') data = f.variables['NDVI average'][:]
print(type(data))
print(data.shape)
plt.imshow(data)
plt.show()
f.close()
f = nc.Dataset('/home/mw/input/metos8969/metos/OMI-Aura_L3-OMTO3e_2017m0105_v003-2017m0203t091906.he5')
data = f.groups['HDFEOS'].groups['GRIDS'].groups['OMI Column Amount O3'].groups['Data Fields'].variables['ColumnAmountO3'] plt.imshow(data)
plt.show()
f.close()
f = nc.Dataset('/home/mw/input/metos8969/metos/AIRS.2002.08.30.227.L2.RetStd_H.v6.0.12.0.G14101125810.hdf')
data = f.variables['topog']
plt.imshow(data)
plt.show()
f.close()
读取GeoTIFF数据
datafile = gdal.Open('/home/mw/input/metos8969/metos/Southern_Norway_and_Sweden.2017229.t
erra.1km.tif')gzip: stdin: not in gzip format
print( "Driver: ",datafile.GetDriver().ShortName, datafile.GetDriver().LongName)
print( "Size is ", datafile.RasterXSize, datafile.RasterYSize)
print( "Bands = ", datafile.RasterCount)
print( "Coordinate System is:", datafile.GetProjectionRef ())
print( "GetGeoTransform() = ", datafile.GetGeoTransform ())
print( "GetMetadata() = ", datafile.GetMetadata ())
绘制GeoTIFF数据

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。