ArcGIS模型构建器批处理操作

在实际的工作中,我们常常需要ArcGIS实现批处理操作,而对于不会python,或者对python不熟的同志,可能非常有必要用一下ArcGIS模型自带的model builder。

这里我以一个简单的例子,来说明这个工具方便性。现在我有一个文件夹,里面包含了四个dbf文件,现在我需要对这写dbf文件分别进行操作,比如Add filed, Field Calculator等等。

这里主要涉及到如何在model builder中添加循环操作。先上个图:

主要步骤:(1)将文件夹拖入到model builder;(2)Insert->Iterations->tables;(3)最后就是常规处理过程。对于不同的循环,需要在第二步选择不同的对象比如还有files, fileds和rasters等的循环。这个例子的功能就是给argis_model文件夹下面每个dbf文件添加一个field。

Note:需要注意的是,我们有时候需要对批处理的复杂度要求比较高,这时候可以将建立的model导出为python scripts,然后我们可以根据需要修改代码,实现其[……]

Read more

xx-Net与Chrome版本不兼容

XX-net用了很久了,是我个人比较喜欢的一个翻墙小程序。前段时间Google搜索不能用了,一直没有去处理,后面找到了原因,是因为都Chrome更新后(Version 58及以上版本),产生的xx-Net与Chrome版本不兼容造成的。

处理方法如下:
(1) 更新XX-net的版本(>=3.31);
(2) 删除已经导入的证书文件,即运行certmgr.msc,找到xx-net的证书,全部删除;
(3) 删除XX-net安装目录下:data\gae_proxy\下的certs文件夹及CA.crt文件;
(4) 最后重新启动XX-Net即可。

关于XX-Net:https://github.com/XX-net/XX-Net

更多讨论参考:https://github.com/XX-net/XX-Net/issues/5322 [……]

Read more

DHSVM结果文件处理程序

DHSVM的一些水文成分(比如降雨蒸散发等)是输出在Mass.Balance这个文件中,按照模拟的时间步长输出的。

如下:

但是实际我们可能关系的是在daily,monthly or yearly的尺度上的结果,方便分析比较。为此我写了一个MATLAB程序能把这个文件输出到三个不同的文件,分别代表daily, montly, yearly的结果。

下面是代码的头文件,需要用户自定义一些:

%% This Code is used to sumarized the default output of DHSVM (Mass.Balance)

%  Initally created by LING ZHANG, zhanglingky@lzb.ac.cn

%  The result is in Excel format; note:the Begining day should be 01/01 if

%  you want to summarize yearly data

%% The meaning for each co[……]

Read more

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

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

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 Tools–>Raster Surface–>Hillshade;

得到渲染的图dem_shadow,将原来dem放在渲染图之上,并设置透明度为50%。现在看起来很有立体感。

[……]

Read more

主成分分析(PCA )

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

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

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

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

3、 拿到一个样本,特征非常多,而样例特别少,这样用回归去直接拟合非常困难,容易过度拟合。比如北京的房价:假设房子的特征是(大小、位置、朝向、是否学区房、建造年代、是否二手、层数、所在层数),搞了这么多特征,结果只有不到十个房子的样例。要拟合房子特征->房价的这么多特征,就会造成过度拟合。

4、 这个与第二个有点类似,假设在IR中我们建立的文档-词项矩阵中,有两个词项为“learn”和“study”,[……]

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 MaxLine 1024

int main(int argc, char *argv[])

{

FILE *InputFid, *OutputFid;

int TempStrComp, CountForDay;

long offset;

char strline01[MaxLine];

char StartLine[MaxLine];

double T[……]

Read more

C 字符串处理

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

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

然后我们找到#所在的位置,然后将地址赋值给StrEnd (注意:这个地址是指向这个字符及其之后字符所组成的字符串首地址),然后将该地址所指的字符串复制为’\0’字符串结束标识。比如上面的例子,StrEnd会指向“#this is the comment”,赋值过后,*StrEnd = “”,即上面的字符变为“   this is what I want   \0this is the comment ”;因为字符串以’\0’为结束标志,因此当我们对Buffer取值时,会得到“   this is what I want   ”。

最后一步,我们去掉字[……]

Read more