前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kri插值实例,批量气象插值(文件对应关系)

kri插值实例,批量气象插值(文件对应关系)

作者头像
一个有趣的灵魂W
发布2020-09-15 12:20:47
7480
发布2020-09-15 12:20:47
举报
文章被收录于专栏:一个有趣的灵魂W

这几天懵了。。。

懵的不懂逻辑了,好吧废话不多说,这次解决的问题其实也比较基础,但却是非常常用和实用,对于入门简直神器。。。通常我们遇到的数据,不会整理的十分友好,需要我们对数据进行进一步处理,才能应用,特别是。。。如果数据之间排列跟预期的差别很大的时候。。。那就。。。虽然我说的也不是很清楚,但是明白的自然明白,就是这么佛系的自己:

贴代码咯

from __future__ import division

import numpy as np

from scipy import stats

from scipy import spatial

import test_gaussian

import matplotlib.pyplot as plt

import os

train = np.genfromtxt(r'D:\Thesis\point\qx.csv', delimiter=',',skip_header=True)

testpoint = np.genfromtxt(r'D:\Thesis\point\1.csv',delimiter=',',skip_header=True)

ds = gdal.Open('D:\Thesis\samrast1.tif')

bandg = ds.GetRasterBand(1)

elevationg = bandg.ReadAsArray()

[cols, rows] = elevationg.shape

format = "GTiff"#5

driver = gdal.GetDriverByName(format)#6

time=train[:,13]

timeuni=np.unique(time)

for i in range(int(len(timeuni))):

train_hour=[]

x_hour=[]

y_hour=[]

for j in range(int(len(train))):

if timeuni[i] == train[j,13]:##对应序号或者对应属性,例如x=1,2 y=1,1,1,2,2,2 依次对应

# train_hour=list(train_hour)

# x_hour=list(x_hour)

# y_hour=list(y_hour)

i1=train[j,9]

i2=train[j,2]

i3=train[j,3]

train_hour.append(i1)

x_hour.append(i2)

y_hour.append(i3)

train_hour=np.array(train_hour)

x_hour=np.array(x_hour)

y_hour=np.array(y_hour)

conqx=np.column_stack((x_hour,y_hour,train_hour))

kriging = test_gaussian.SimpleKriging(training_data=conqx)

predict = kriging.predict(test_data=testpoint, l=.5, sigma=.2)

pre=list(predict)

pre.reverse()#这里面有个顺序问题,我一直没搞懂,到底要不要逆序

pe=np.array(pre)

pr=pe.reshape(58,52)

outDataRaster = driver.Create("D:/ren0606/windraster/"+str(timeuni[i])+'.tif', rows, cols, 1, gdal.GDT_Int16)

outDataRaster.SetGeoTransform(ds.GetGeoTransform())

outDataRaster.SetProjection(ds.GetProjection())

outDataRaster.GetRasterBand(1).WriteArray(pr)

outDataRaster.FlushCache()

del outDataRaster

以上是导出

plt.figure(figsize=(10,10))

im=plt.imshow(pr,cmap='YlGn',interpolation = 'sinc', vmin = 10, vmax = 0)

plt.colorbar()

plt.show

以上是显示

批量效果贼好

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个有趣的灵魂W 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档