arcgis地形预处理工具在吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arcgis地形预处理工具在吗相关的知识,希望对你有一定的参考价值。
本章导读:ArcGIS的水文分析工具是基于DEM进行地表水流动的模拟,其本身不涉及到精确数值的水流流量。在形成径流的过程中考虑的全是地形因素,D8单流向算法决定了其必须针对无凹陷的DEM数据才能正确的分析出结果。在上一章中笔者已经就如何制作适合于ArcGIS水文分析的DEM数据。在本章中笔者将会介绍如何针对已有的DEM进行预处理,制作出适合水文分析的无凹陷DEM数据。在ArcGIS原生的水文分析工具中包含两个常用的地形分析工具:汇、填洼。
###汇
汇是指流向栅格中流向无法被赋予八个有效值之一的一个或一组空间连接像元。汇被视为具有未定义的流向,并被赋予等于其可能方向总和的值。例如,如果最陡下落及其产生的流向都是向右 (1) 和向左 (16),则会分配值 17 作为该像元的流向。
在介绍ArcGIS流向分析算法的时候那个流向九宫格其定义是2的n次方,所以,通过汇的计算之后形成的栅格数据,可以通过其值反演出汇所在的方位。对于分析人员来说没什么作用,但对于后续编写程序的人员去改进水文分析是非常重要的。
这一段话中包含了非常大的信息量:
1、产生汇的主要原因之一就是DEM数据制作的时候采样效果和高程值设置为整数时导致的。这就是笔者在上一章中详细介绍制作适合于水文分析的DEM的原因。有些参数的设置在测绘行业上生成DEM基本上是无所谓的,但对水文分析来说就非常重要的。如果还有一些疑问,可以翻看上一章《ArcGIS水文分析实战教程(3)DEM数据准备》。如果能在DEM制作一环上已经对DEM数据进行控制,那是效果最好的。
2、冰川和喀斯特地形不适合使用ArcGIS水文分析。这主要是D8算法的原因。
3、像元大小小于10米的DEM数据很少自然产生汇。如果这种精度的数据都产生了汇,一定要检查这些汇是不是在现实中存在,通过叠加一些地形数据可以对比查看。否则就是数据中存在一些致命的错误。
4、像元大小增大,汇也随之增加。所以精度太差的数据其实是不适合于做小河流或小流域的分析,因为汇的大量存在基本上上会导致一部分的径流断流,由于汇入大江大河的径流会比较多,所以,针对一定级别的河流,还是具有参考价值。
以下是汇的剖面图
由于汇的地势都低于周边8个区域,所以水流都会汇入其中,导致径流最终断流。但现实中就算出现一些小的洼地,只要降水充足,这些洼地都会被填平,填满后径流将会继续往外流出。所以,D8算法就是假设有无限的降水,雨水不断的在地表形成径流。
###填洼
填平汇的过程就是填洼。ArcGIS中的填洼工具,使用与焦点流、流向、汇、分水岭和区域填充等工具等效的功能来定位和填充汇。该工具的执行过程会进行迭代,直到指定 z 限制内的所有汇均填充完毕。在填充汇的同时,可能会在填充区域的边界处创建其他汇,这些汇将在下个迭代中移除。
接下来看看填洼工具的一些参数,如下图
填洼工具必填的两个参数,其一是DEM,这个DEM有可能是原始的DEM,还有可能是经过填洼之后还发现汇的DEM(也就是n次填洼后的DEM),其二是输出的路径。关于Z值限制,是个可选项,估计大部分人都看不懂这个可选项到底代表什么意思,到底怎么设置。这个Z值限制在下面再做介绍。
先来看一张非常经典的水分分析的流程图,这张图似乎被引用过无数次,但大部分人只是做了一个单向的操作。如下图
这张流程图左边部分是制作无凹陷点DEM数据的流程。这个过程其实是一个循环的过程,不断的填洼并重新判断是否存在汇,如果还存在汇,则继续填洼,直到出现无凹陷点DEM。从图上来看,这最起码是个多次填洼的过程,而大部分人的做法就是不管汇是否存在,做一次填洼后再进行后续的水文分析。
精确填洼
直接使用填洼工具对DEM数据进行填洼,不管汇的情况,确实可以形成无凹陷点的DEM。但前面也提及到,如果只是负责填,但不是精确的填,大量的凹陷点被填平(这些凹陷点不一定就都是汇),会导致径流的线形形状与实际不符,在弯曲细节等会存在一定的损失。所以,如果水文分析人员要研究非常准确的地形与河流的关系,而不是单纯的河网拓扑关系,精确填洼就非常重要了。
不管是网上关于ArcGIS水文分析的教程还是ArcGIS官方的帮助,都没有具体说明使用【汇】工具之后找到汇后作什么样的处理。大部分人的处理更是简单粗暴,有汇即填洼,也不管具体哪里需要怎么填洼,填洼完之后直接进入分析环节。
笔者花了不少时间来研究其汇和填洼的原理,总结出以下步骤:
1、寻找汇
寻找汇相对来说比较简单,先通过DEM计算流向,然后直接使用【汇】工具进行查找,最终汇得出汇的栅格数据,如下图,使用的是ArcGIS spatial中自带的DEM数据进行分析。
图上叠加了第一次查找汇的栅格,发亮部分的点就是凹陷点,如果放大一点显示,那么可以清楚看到其像元形状,如下图
计算出Z值限制
z 限制指定凹陷点深度和倾泻点间的最大允许差值并确定要填充的凹陷点和保持不变的凹陷点。z 限制并非要填充的最大深度。
从描述来看,Z值限制要做的事情就是确保填洼工具不要一刀切,不要把所有的低洼点都填充,因为有些不是真的凹陷点;另一作用就是符合条件的洼地都会被指定填充。
例如,假设一个凹陷点区域中倾泻点的高程为 210 英尺,凹陷点的最深点为 204 英尺(相差 6 英尺)。如果将 z 限制设置为 8,则会填充该特殊凹陷点。但是,如果将 z 限制设置为 4,则不会填充该凹陷点,因为该凹陷点的深度超过该限制值,将其视为有效凹陷点。
填洼
填洼是地形处理中必不可少的一环。如果按照工具论,直接使用ArcGIS的填洼工具的默认配置,可以对DEM数据进行无限量的填洼。但笔者不推荐这种方式,而且Esri也不推荐。
正确的填洼流程应该是先要计算出Z值限制,然后根据一个或者一组Z值限制进行精确填洼。关于Z值限制前面已经说得很清楚,在这个阈值范围内汇才会被填充。那么Z值限制怎么计算出来呢?在【汇】的原理里面,帮助有具体提及到,但都是使用arcpy脚本的形式进行计算。以下引用ArcGIS帮助的Z值计算流程:
使用汇创建通过深度进行编码的汇的栅格。
输入流向栅格数据:flowdir
输出栅格:汇点
使用分水岭为每个汇创建汇流区域栅格。
输入流向栅格数据:flowdir
输入栅格数据或要素类倾泻点数据:汇点
输出栅格:sink_areas
将分区统计与最小值统计数据结合使用,以在每个汇的分水岭中创建最小高程的栅格。
输入栅格数据或要素区域数据:sink_areas
区域字段:值
输入赋值栅格:高程
输出栅格:sink_min
统计类型:MINIMUM
使用区域填充在每个汇的分水岭中创建最大高程的栅格。
输入区域栅格数据:sink_areas
输入权重栅格数据:高程
输出栅格:sink_max
使用减将最大值减去最小值以查找深度。
输入栅格数据 1:sink_max
输入栅格数据 2:sink_min
输出栅格:sink_depth
ArcPy的代码如下
为了与默认的填洼工具的结果进行对比,笔者特意针对该流程,使用modelbuilder进行了建模,以求出Z值限制。建模流程如下图
最后求出的是一组Z值限制,最大的Z值为32,最小是1,共有20处限制值。如下图所示
笔者做了几组测试
测试1:
对原始DEM数据进行无Z值限制填洼,直接执行填洼工具,使用默认设置,不设置Z值;
利用填洼完之后的DEM数据计算流向,并执行【汇】工具,发现所有的汇已经被填充,再也没有汇的存在了。如下图
测试2
对原始DEM数据进行有Z值限制的填洼,将Z值设置为33(之前已经计算出Z值最大值为32)。同样,对填洼过的DEM进行流向计算,并查找汇,发现存在汇,如下图
如果按照帮助里面的说明,只要设置了最大的Z值,应该会将所有的汇都填充掉,但事实上没有。唯一的解释了填充汇的同时又产生了新的汇。
测试3
使用笔者按流程做好的Z值计算工具,针对填洼限制值为33的DEM数据重新计算Z值限制,如下图
计算出来新的Z值为60,如下图
再利用61作为Z值限制重新对填洼为Z值为33的DEM数据进行再次填洼,并重新查找一次汇。这一次的结果没有再发现任何的汇,跟测试1同样的结果,如下图
测试4
流程与测试1一样,直接使用原始DEM数据填洼,但填洼的Z值限制一步到位设置为61,然后查找汇。结果跟预测的一样,所有的汇都被填充,如下图
测试5
该测试才是最后的测试结论,分别都这个产生无汇结果的填洼过的DEM数据进行对比,用减法工具执行。如果这些DEM是一样的话,减法的结果将会没有任何的数据。论证的目的在于设置Z值和不设置Z值到底有多大的差别。
第一组对比为测试1的无Z值填洼的DEM数据VS测试3的第二次填洼的DEM数据(Z值为61的那次),减法结果如下
减法的结果为0,也就是说这两个填洼后的栅格无凹陷点DEM是一模一样的。如下图
第二组对比为测试1的无Z值填洼的DEM数据VS测试4的直接使用Z值为61填洼的DEM数据。同样做减法,结果如下
结果同样是0,不用做第三组测试也知道测试2与测试3的填洼后的DEM也是一样的。
测试6
对原始DEM数据进行Z值为300的填洼,然后查找汇,结果显然也是完全被填充,不再存在汇;然后用减法对填洼后的数据与无Z值填洼的DEM数据做减法对比,结果为0。也就是说只要设定一个无限大的Z值,所有的汇都会被填充,然后构成无凹陷DEM数据前一步的填洼数据,与无Z值填洼结果是一样的。
###总结
通过6个测试和3次对比,基本上可以确定,精确计算Z值多次填洼与不设置Z值填洼效果是等价的。基本上可以确定如果要生成无凹陷DEM,直接使用填洼工具做一次无Z值填洼即可。ArcGIS的创建无凹陷DEM方法是从8.x时代就传下来的,笔者的测试版本是10.5,估计填洼工具早已经实现了自动化计算Z值以及自动迭代操作,只是工具帮助上没有作更新的说明罢了。因此,在使用ArcGIS水文分析之前可以大胆的对原始DEM数据做无Z值限制的填洼操作。
————————————————
版权声明:本文为CSDN博主「李远祥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:ArcGIS水文分析实战教程(4)地形预处理_李远祥的博客-CSDN博客_arcgis憛急智 参考技术A DEM进行地表水流动的模拟,其本身不涉及到精确数值的水流流量。在形成径流的过程中考虑的全是地形因素,D8单流向算法决定了其必须针对无凹陷的DEM数据才能正确的分析出结果。在上一章中笔者已经就如何制作适合于ArcGIS水文分析的DEM数据。在本章中笔者将会介绍如何针对已有的DEM进行预处理,制作出适合水文分析的无凹陷DEM数据。
在ArcGIS原生的水文分析工具中包含两个常用的地形分析工具:汇、填洼。
###汇
汇是指流向栅格中流向无法被赋予八个有效值之一的一个或一组空间连接像元。汇被视为具有未定义的流向,并被赋予等于其可能方向总和的值。例如,如果最陡下落及其产生的流向都是向右 (1) 和向左 (16),则会分配值 17 作为该像元的流向。
在介绍ArcGIS流向分析算法的时候那个流向九宫格其定义是2的n次方,所以,通过汇的计算之后形成的栅格数据,可以通过其值反演出汇所在的方位。对于分析人员来说没什么作用,但对于后续编写程序的人员去改进水文分析是非常重要的。
这一段话中包含了非常大的信息量:
1、产生汇的主要原因之一就是DEM数据制作的时候采样效果和高程值设置为整数时导致的。这就是笔者在上一章中详细介绍制作适合于水文分析的DEM的原因。有些参数的设置在测绘行业上生成DEM基本上是无所谓的,但对水文分析来说就非常重要的。如果还有一些疑问,可以翻看上一章《ArcGIS水文分析实战教程(3)DEM数据准备》。如果能在DEM制作一环上已经对DEM数据进行控制,那是效果最好的。
2、冰川和喀斯特地形不适合使用ArcGIS水文分析。这主要是D8算法的原因。
3、像元大小小于10米的DEM数据很少自然产生汇。如果这种精度的数据都产生了汇,一定要检查这些汇是不是在现实中存在,通过叠加一些地形数据可以对比查看。否则就是数据中存在一些致命的错误。
4、像元大小增大,汇也随之增加。所以精度太差的数据其实是不适合于做小河流或小流域的分析,因为汇的大量存在基本上上会导致一部分的径流断流,由于汇入大江大河的径流会比较多,所以,针对一定级别的河流,还是具有参考价值。
以下是汇的剖面图
由于汇的地势都低于周边8个区域,所以水流都会汇入其中,导致径流最终断流。但现实中就算出现一些小的洼地,只要降水充足,这些洼地都会被填平,填满后径流将会继续往外流出。所以,D8算法就是假设有无限的降水,雨水不断的在地表形成径流。
###填洼
填平汇的过程就是填洼。ArcGIS中的填洼工具,使用与焦点流、流向、汇、分水岭和区域填充等工具等效的功能来定位和填充汇。该工具的执行过程会进行迭代,直到指定 z 限制内的所有汇均填充完毕。在填充汇的同时,可能会在填充区域的边界处创建其他汇,这些汇将在下个迭代中移除。
接下来看看填洼工具的一些参数,如下图
填洼工具必填的两个参数,其一是DEM,这个DEM有可能是原始的DEM,还有可能是经过填洼之后还发现汇的DEM(也就是n次填洼后的DEM),其二是输出的路径。关于Z值限制,是个可选项,估计大部分人都看不懂这个可选项到底代表什么意思,到底怎么设置。这个Z值限制在下面再做介绍。
先来看一张非常经典的水分分析的流程图,这张图似乎被引用过无数次,但大部分人只是做了一个单向的操作。如下图
这张流程图左边部分是制作无凹陷点DEM数据的流程。这个过程其实是一个循环的过程,不断的填洼并重新判断是否存在汇,如果还存在汇,则继续填洼,直到出现无凹陷点DEM。从图上来看,这最起码是个多次填洼的过程,而大部分人的做法就是不管汇是否存在,做一次填洼后再进行后续的水文分析。
精确填洼
直接使用填洼工具对DEM数据进行填洼,不管汇的情况,确实可以形成无凹陷点的DEM。但前面也提及到,如果只是负责填,但不是精确的填,大量的凹陷点被填平(这些凹陷点不一定就都是汇),会导致径流的线形形状与实际不符,在弯曲细节等会存在一定的损失。所以,如果水文分析人员要研究非常准确的地形与河流的关系,而不是单纯的河网拓扑关系,精确填洼就非常重要了。
不管是网上关于ArcGIS水文分析的教程还是ArcGIS官方的帮助,都没有具体说明使用【汇】工具之后找到汇后作什么样的处理。大部分人的处理更是简单粗暴,有汇即填洼,也不管具体哪里需要怎么填洼,填洼完之后直接进入分析环节。
笔者花了不少时间来研究其汇和填洼的原理,总结出以下步骤:
1、寻找汇
寻找汇相对来说比较简单,先通过DEM计算流向,然后直接使用【汇】工具进行查找,最终汇得出汇的栅格数据,如下图,使用的是ArcGIS spatial中自带的DEM数据进行分析。
图上叠加了第一次查找汇的栅格,发亮部分的点就是凹陷点,如果放大一点显示,那么可以清楚看到其像元形状,如下图
计算出Z值限制
z 限制指定凹陷点深度和倾泻点间的最大允许差值并确定要填充的凹陷点和保持不变的凹陷点。z 限制并非要填充的最大深度。
从描述来看,Z值限制要做的事情就是确保填洼工具不要一刀切,不要把所有的低洼点都填充,因为有些不是真的凹陷点;另一作用就是符合条件的洼地都会被指定填充。
例如,假设一个凹陷点区域中倾泻点的高程为 210 英尺,凹陷点的最深点为 204 英尺(相差 6 英尺)。如果将 z 限制设置为 8,则会填充该特殊凹陷点。但是,如果将 z 限制设置为 4,则不会填充该凹陷点,因为该凹陷点的深度超过该限制值,将其视为有效凹陷点。
填洼
填洼是地形处理中必不可少的一环。如果按照工具论,直接使用ArcGIS的填洼工具的默认配置,可以对DEM数据进行无限量的填洼。但笔者不推荐这种方式,而且Esri也不推荐。
正确的填洼流程应该是先要计算出Z值限制,然后根据一个或者一组Z值限制进行精确填洼。关于Z值限制前面已经说得很清楚,在这个阈值范围内汇才会被填充。那么Z值限制怎么计算出来呢?在【汇】的原理里面,帮助有具体提及到,但都是使用arcpy脚本的形式进行计算。以下引用ArcGIS帮助的Z值计算流程:
使用汇创建通过深度进行编码的汇的栅格。
输入流向栅格数据:flowdir
输出栅格:汇点
使用分水岭为每个汇创建汇流区域栅格。
输入流向栅格数据:flowdir
输入栅格数据或要素类倾泻点数据:汇点
输出栅格:sink_areas
将分区统计与最小值统计数据结合使用,以在每个汇的分水岭中创建最小高程的栅格。
输入栅格数据或要素区域数据:sink_areas
区域字段:值
输入赋值栅格:高程
输出栅格:sink_min
统计类型:MINIMUM
使用区域填充在每个汇的分水岭中创建最大高程的栅格。
输入区域栅格数据:sink_areas
输入权重栅格数据:高程
输出栅格:sink_max
使用减将最大值减去最小值以查找深度。
输入栅格数据 1:sink_max
输入栅格数据 2:sink_min
输出栅格:sink_depth
ArcPy的代码如下
为了与默认的填洼工具的结果进行对比,笔者特意针对该流程,使用modelbuilder进行了建模,以求出Z值限制。建模流程
最后求出的是一组Z值限制,最大的Z值为32,最小是1,共有20处限制值。
笔者做了几组测试
测试1:
对原始DEM数据进行无Z值限制填洼,直接执行填洼工具,使用默认设置,不设置Z值;
利用填洼完之后的DEM数据计算流向,并执行【汇】工具,发现所有的汇已经被填充,再也没有汇的存在了。如下图
测试2
对原始DEM数据进行有Z值限制的填洼,将Z值设置为33(之前已经计算出Z值最大值为32)。同样,对填洼过的DEM进行流向计算,并查找汇,发现存在汇
如果按照帮助里面的说明,只要设置了最大的Z值,应该会将所有的汇都填充掉,但事实上没有。唯一的解释了填充汇的同时又产生了新的汇。
使用笔者按流程做好的Z值计算工具,针对填洼限制值为33的DEM数据重新计算Z值限制,如下图
计算出来新的Z值为60,如下图
再利用61作为Z值限制重新对填洼为Z值为33的DEM数据进行再次填洼,并重新查找一次汇。这一次的结果没有再发现任何的汇,跟测试1同样的结果,
流程与测试1一样,直接使用原始DEM数据填洼,但填洼的Z值限制一步到位设置为61,然后查找汇。结果跟预测的一样,所有的汇都被填充,如下图
该测试才是最后的测试结论,分别都这个产生无汇结果的填洼过的DEM数据进行对比,用减法工具执行。如果这些DEM是一样的话,减法的结果将会没有任何的数据。论证的目的在于设置Z值和不设置Z值到底有多大的差别。
第一组对比为测试1的无Z值填洼的DEM数据VS测试3的第二次填洼的DEM数据(Z值为61的那次),减法结果如下
减法的结果为0,也就是说这两个填洼后的栅格无凹陷点DEM是一模一样的。
第二组对比为测试1的无Z值填洼的DEM数据VS测试4的直接使用Z值为61填洼的DEM数据。同样做减法,结果如下
结果同样是0,不用做第三组测试也知道测试2与测试3的填洼后的DEM也是一样的。
对原始DEM数据进行Z值为300的填洼,然后查找汇,结果显然也是完全被填充,不再存在汇;然后用减法对填洼后的数据与无Z值填洼的DEM数据做减法对比,结果为0。也就是说只要设定一个无限大的Z值,所有的汇都会被填充,然后构成无凹陷DEM数据前一步的填洼数据,与无Z值填洼结果是一样的。
通过6个测试和3次对比,基本上可以确定,精确计算Z值多次填洼与不设置Z值填洼效果是等价的。基本上可以确定如果要生成无凹陷DEM,直接使用填洼工具做一次无Z值填洼即可。ArcGIS的创建无凹陷DEM方法是从8.x时代就传下来的,笔者的测试版本是10.5,估计填洼工具早已经实现了自动化计算Z值以及自动迭代操作,只是工具帮助上没有作更新的说明罢了。因此,在使用ArcGIS水文分析之前可以大胆的对原始DEM数据做无Z值限制的填洼操作。 参考技术B ArcGIS水文分析实战教程:地形预处理

Ai尚研修科研技术服务平台
助力科研技术简学践行
本章导读:ArcGIS的水文分析工具是基于DEM进行地表水流动的模拟,其本身不涉及到精确数值的水流流量。在形成径流的过程中考虑的全是地形因素,D8单流向算法决定了其必须针对无凹陷的DEM数据才能正确的分析出结果。在上一章中笔者已经就如何制作适合于ArcGIS水文分析的DEM数据。在本章中笔者将会介绍如何针对已有的DEM进行预处理,制作出适合水文分析的无凹陷DEM数据。
在ArcGIS原生的水文分析工具中包含两个常用的地形分析工具:汇、填洼。
###汇
汇是指流向栅格中流向无法被赋予八个有效值之一的一个或一组空间连接像元。汇被视为具有未定义的流向,并被赋予等于其可能方向总和的值。例如,如果最陡下落及其产生的流向都是向右 (1) 和向左 (16),则会分配值 17 作为该像元的流向。
在介绍ArcGIS流向分析算法的时候那个流向九宫格其定义是2的n次方,所以,通过汇的计算之后形成的栅格数据,可以通过其值反演出汇所在的方位。对于分析人员来说没什么作用,但对于后续编写程序的人员去改进水文分析是非常重要的。
这一段话中包含了非常大的信息量:
1、产生汇的主要原因之一就是DEM数据制作的时候采样效果和高程值设置为整数时导致的。这就是笔者在上一章中详细介绍制作适合于水文分析的DEM的原因。有些参数的设置在测绘行业上生成DEM基本上是无所谓的,但对水文分析来说就非常重要的。如果还有一些疑问,可以翻看上一章《ArcGIS水文分析实战教程(3)DEM数据准备》。如果能在DEM制作一环上已经对DEM数据进行控制,那是效果最好的。
2、冰川和喀斯特地形不适合使用ArcGIS水文分析。这主要是D8算法的原因。
3、像元大小小于10米的DEM数据很少自然产生汇。如果这种精度的数据都产生了汇,一定要检查这些汇是不是在现实中存在,通过叠加一些地形数据可以对比查看。否则就是数据中存在一些致命的错误。
4、像元大小增大,汇也随之增加。所以精度太差的数据其实是不适合于做小河流或小流域的分析,因为汇的大量存在基本上上会导致一部分的径流断流,由于汇入大江大河的径流会比较多,所以,针对一定级别的河流,还是具有参考价值。
以下是汇的剖面图 参考技术C 工具和工具箱分步阅读
1
/3
arcigs中提供了多样的工具,经常使用的少数常用工具位于标准工具条中的地理处理菜单中。我们可以通过自定义 > 自定义模式来自定义此工具列表。
2
/3
使用搜索功能,在搜索窗口中查找工具。搜索功能根据输入的关键字或描述工具功能的短语来查找工具。
3
/3
浏览 ArcToolbox 窗口来查找工具。与目录窗口一样,在 ArcToolbox 窗口中,也将以树视图的形式来显示工具和工具箱。您可以向 ArcToolbox 窗口中添加自定义的工具箱。
结果窗口
1
/1
可以在结果窗口中跟踪工具执行情况。要打开结果窗口,可以单击地理处理 > 结果。
后台处理
1
/1
工具在后台运行,也就是说,当工具运行时,可以继续使用 ArcMap(或其他应用程序,例如 ArcGlobe)。文档底部将出现一个进度条显示当前所执行工具的名称。工具执行完毕后,系统托盘中将显示一个弹出通知。
模型和模型构建器
1
/1
通过地理处理,可将一系列工具串联在一起,将其中一个工具的输出作为另一个工具的输入。通过地理处理模型将多个工具串联在一起,下图所示的模型构建器展示了模型的创建方法。
Python 和脚本
1
/1
Python 是一种不受局限、跨平台的开源编程语言,它处理速度快、功能强大且简单易学。由于 Python 不需要使用编译器,因此视其为一种脚本(或解释型)语言。用 Python 编写的程序称为脚本。
当安装 ArcGIS 时,系统将自动安装 Python。
内容仅供参考并受版权保护
举报/反馈 参考技术D arcgis地形预处理工具在,Hillshade,这个工具是通过模拟太阳光照强度来展示地形的起伏效果。
ArcGIS制图技巧系列地形渲染
ArcGIS制图技巧系列(2)地形渲染by 李远祥
DEM数据是常见的地形数据,在GIS常规的制图中,DEM一直扮演着增强效果。由于带有高程值,DEM在很多情况下都在三维中显示,但这里主要介绍的是在二维ArcMap下如何增强其显示。
以下是一个非常常见的DEM数据,默认加载到ArcGIS,呈灰白显示。这种原始状态的显示只有专业人员根据图例才能看懂,完全没有任何直观可言。
现在又是要发挥制图人员想象力的时刻了。首先我们希望能够看到地形的明显起伏,虽然眼前的这份数据是一个真实的数据,但某些时候真实的数据还不如处理过的数据看着感受真切。其次就是需要一个比较好的色彩来渲染,避免黑不溜秋的一坨像素点堆积。接下来又是根据我们自己心里面的地图对现在的情况进行分解:
1)必须能看到地形起伏。
2)用好的色彩着色。
关于第一点,在美术透视技术已经告诉我们怎么样在一个二维纸面上表达一个三维立方体了,那就是通过多个侧视的光线汇聚,或者阴影方式来模拟多一个维度。这一原理可以被充分利用在各种制图中。例如我们可以针对这个DEM数据进行【山体阴影】的操作,生成新的DEM数据。如下图,使用【山体阴影】工具处理后的效果
操作过后非常明显的展示了地形的起伏,而且这种模拟,就像太阳过在某一侧照射,产生了另一侧的阴影,使得山脊非常的明显;凹陷的部分是河流,由于河流在地位,所以没有任何的阴影像素产生,所以效果也是比较明显的。人眼对这种做过做出处理的假数据是非常敏感的,比之前的真是DEM辨别起来要容易的多。所以,对于第一点的规则,这一步算是满足了。但黑白的效果对于当前的彩色显示器来说,简直就是一种丑陋。
那么,接下来就需要分解第二个规则了,就是“给熊猫拍一张彩照”。这个本本身不是个难事。很多人都懂的对dem进行配色。例如,直接对原始数据进行配色渲染,效果如下
又或是觉得上图效果过于平面,采用山体阴影效果后的数据进行渲染,效果又如下
这样的效果似乎更加糟糕。这个时候我们又需要从美术的透明和透视上下功夫了。从上面两个图可以看出原始数据和生成的数据各有自己的优势。原始DEM对着色有着非常连贯的效果,也就是说色彩过度非常好;山体阴影数据对起伏非常敏感,高差显示明显。只要将这两个数据充分中和一下就非常好了。
前些章节我们介绍过地图的叠加,这个时候就可以用上了。我们将色彩连贯的原始数据放在最上层,高地起伏的山体阴影数据放在下层。然后对原始数据使用色彩渲染,只要这个渲染色带不是太糟糕,一般效果都可以出来。如下图
这个效果还是过于扁平,没能达到最终的要求。接下来一步就能达到化腐朽为神奇了。我们直接针对上层的DEM做一个透明效果。如下图配置,在【图层属性】—【显示】中,将透明度设置为30%左右。
点击确定后可以看到最终的彩色熊猫照片了。如下图
这样,通过两层的数据进行叠加,显示出来非常明显的渲染效果。当然,如果希望显示更加有效果,建议换一个更好的色带。ArcMap的色带设计器比较难用,而且在设计的时候修改比较麻烦,所以笔者在【快速制图插件】工具里面,集合了一个色带设计功能,实现色带所见即得的效果,而且非常方便修改显示。下图使用的就是制图插件的功能,通过滑块的方式去调整不同的色彩。非常感谢Esri中国石羽提供的创意和部分代码。如果觉得这个好的话,可以下载【快速制图插件】
掌握了传统用的办法之后,我们来看看非传统的做法,就是使用ArcGIS10.x版本带的影像函数功能。几乎可以不生成任何的数据前提下快速的实现地形渲染。在菜单栏打开【窗口】--【影像分析】面板,如下图
点击影像面板中的影像函数图标,弹出影像函数设置界面
在【函数模版编辑器】中,选中数据,点击右键,插入函数,选择【晕渲地貌函数】。
在弹出的设置界面中,可以看到这个函数基本上包含了山体阴影的一些默认参数,就是将我们上面的两步融合在一个函数中进行处理。
点击确定之后,几乎在秒级显示出结果。这得益于ArcGIS影像函数这种动态的算法,只产生算法描述,所有的显示都是动态的,所以不存在生成新的数据。
无论使用什么样的方式和方法,都可以看到ArcGIS在地形渲染的方式都是采用两个图层的结构进行辅助渲染。只要具备一些美术的原理,基本上就可以制作出精美的地图。
以上是关于arcgis地形预处理工具在吗的主要内容,如果未能解决你的问题,请参考以下文章
怎样将DEM用ARCGIS软件处理成地图上用的带有立体的山体?
ArcGIS水文分析实战教程(16) ArcHydro 修正地形