Year: 2016

VIC模型对气象数据进行时间降尺度

DHSVM模型需要subdaily的气象数据,而一般气象站只有daily的数据。为此,我将VIC模型的自带的气象数据的Meteorological Forcing Disaggregation模块,比较粗略的抠出来了,使其可以方便的使用于气象数据时间降尺度,从而满足DHSVM模型模型的数据要求。否则,直接采用原来的VIC模型,对于新手,比较复杂。 抠出来的代码我已经编译了,然后放在这里共享。程序输入为daily的气象台站数据,然后输出subdaily数据,格式完全和DHSVM对应。因此可以直接驱动DHSVM数据。 关于这个程序,我写了个简单说明: #**********************[……]

Read more

Arcgis可视化DHSVM的streamnetwork

问题是这样的,现在我手上有DHSVM的test site data,现在我想可视化stream,这需要做一些处理。

DHSVM的输入数据中包含了stream.map文件,格式如下:

现在我需要将这个文件在Arcgis中转为可视化文件。

(1)采用MATLAB,将上述文件转化为ACII文件,没有的数据设置为-9999;

(2) 添加header file,这样得到Arcgis需要的标准的ACII文件。

(3) 采用Arcgis中ASCII to Raster工具进行转化,OK!

现在我想对dem进行渲染。工具:3D Analyst To[……]

Read more

主成分分析(PCA )

关于主成分(PCA)分析,其实在上大学时就已经接触到了,当时感觉也没弄得十分清楚。前面花了点时间,来重新figure it out.

(1)真实的训练数据总是存在各种各样的问题:

1、 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。

2、 拿到一个数学系的本科生期末考试成绩单,里面有三列,一列是对数学的兴趣程度,一列是复习时间,还有一列是考试成绩。我们知道要学好数学,需要有浓厚的兴趣,所以第二项与第一项强相关,第三项和第二项也是强相关。那是不是可以合并第一项和第二项呢?

3、 拿到一个样[……]

Read more

DHSVM Subdailiy to Daily streamflow

Update 2016/11/30

今天我又重新写了subdaily to monthly的程序,现在放在这里一并和大家分享。

截个图:

DHSVM_stream.rar

DHSVM模型流域出口的河川径流的格式(3小时为例):

现在要将Subdaily的streamflow转化为daily,我写了一个C的程序来实现,先贴结果.

源代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define M[……]

Read more

C 字符串处理

首先我们来看下面的代码。这个代码,目的是想对一行字符串(以#符号开始)的注释前后空白进行去除。如“  this is what I want   #this is the comment”, 我想得到“this is what i want”。

首先我们将字符串地址赋值给StrStart, 然后判断是否空白,如果是,则将地址向后移动一位,以此类推,这样找到了非空白字符地址(注意:这里没有删掉buffer前面的空白);

然后我们找到#所在的位置,然后将地址赋值给StrEnd (注意:这个地址是指向这个字符及其之后字符所组成的字符串首地址),然后将该地址所指的字符串复制为’\0’字[……]

Read more

Explict vs Implict FInite Difference Scheme

数值差分方法一般分为显式差分与隐式差分,对二者的区别我查阅了相关的资料。我后面发现关于二者区分不是有一些差异。如Wiki:

Explicit methods calculate the state of a system at a later time from the state of the system at the current time, whileimplicit methods find a solution by solving an equation involving both the current state of the system and the late[……]

Read more

Qt GUI初探

周末花点时间折腾QT GUI的东西,基本东西掌握得差不多了,现在点总结。

(1)第一步,我们新建一个主窗口,然后添加三个文本框,计算两个数据之和:

在UI deigner中拖入文本框,然后加入两个按钮,我们右键button1,选择->转入槽,关于基本概念,我就不解释了,进入到click事件响应函数里面:

然后,即可实现两个数据之和,并显示在文本3中。这里,为了理解Qt中信号与槽的机制,我做了一个的测试,我首先添加button Connect,然后再click事件响应函数中添加:

connect(this->ui->add,SIGNAL([……]

Read more