导航:首页 > 源码编译 > 流向分析中的d8算法怎么弄

流向分析中的d8算法怎么弄

发布时间:2022-05-09 03:15:18

❶ 你好,请问你Arcgis求取地形指数,解决没有,谢谢

关于在ArcGIS中地形指数的计算,网上能找到不少的文章,但是不容易找到具有的方法。这是一个自己摸索的方法,不知道对不对,欢迎讨论指正。基本公式:

原始数据:DEM栅格
过程数据:洼地填充后的洼地流向flowdirfill和汇流累积量flowacc。二者计算过程参考汤国安地理信息系统空间分析实验教程第十一章.
1计算SCA(specific catchment area)
SCA=CA/flow width
CA=(flowacc+1)*单位栅格的面积(分辨率^2)(+1很重要,在修正这个之前,忽略加1导致最后结果出现负值。)
(1)计算汇水面积CA。
通过hydrology模块,计算出填充洼地后的flowacc*分辨率平方得到汇水面积CA

(2)确定流向宽度flow width。
对于D8算法而言,当流向为格网对角线方向时,流向宽度为sqrt(2)*格网间距L;东西南北四方向的,流向宽度为格网间距L。
经洼地填充后生成的Flowdirfill即8个流向,用con条件语句进行计算,指定东西南北方向的格网间距为L,对角线方向的为sqrt(2)*L。得到流向宽度。

Example
指定分辨率为25米,条件语句如下:
con([flowdirfill] == 1,25,[flowdirfill] == 4,25,[flowdirfill] == 16,25,[flowdirfill] == 64,25,[flowdirfill] == 2,25*Sqrt(2),[flowdirfill] == 8,25*Sqrt(2),[flowdirfill] == 32,25*Sqrt(2),[flowdirfill] == 128,25*Sqrt(2))
(3)计算SCA。
将汇水面积除以流向宽度得到单位汇水面积。
2计算slope
用arctoolbox里面的slope功能直接对原始数据进行坡度的求取。注意得到的坡度单位是°degree

3计算地形指数
用spatial analysis tools里面的raster calculator工具进行计算

在这里说明一下。生产坡度的时候单位是度。但是在栅格计算器中的tan函数默认值为弧度。所以直接tan("slope")会出现问题,需要将角度的坡度转化成弧度进行计算。公式如上图。
得到地形指数值,从porperties中可以得到地形指数的最小值最大值平均值等统计指标。
http://blog.renren.com/share/287659543/15831977387

❷ 关于社会数字划分

随着气象部门对流域降水预报工作的开展,各地、市气象局相继成立了流域预报中心,对本地大江河流域进行降水预报,因此如何确定预报流域的界限,是各流域预报中心面临的问题。传统的做法是根据预报分辨率的需要,从一定比例尺的地图上人工勾画出预报流域的界限,再扫描到计算机中供流域降水预报使用。随着计算机技术和地理信息系统的发展,许多研究和应用成果表明�1~2�,利用数字地形分析技术从DEM中直接生成河网、划分流域界限乃至提取流域内的地形属性都是切实可行的。
本文利用江西省1:25万数字地形资料,选取贵溪市为研究区域,采用美国农业部农业研究实验室开发的TOPAZ(3.1版)软件,对流域的数字划分进行了试验。TOPAZ软件可以从数字高程模型中自动提取地形参数,例如坡度、坡向的计算、河网生成、子流域划分等。这些技术已在许多研究中得到应用[3]。
1数字高程模型的构建
数字高程模型是描述地面高程值空间分布的1组有序数组,是数字地形模型的组件之一。数字高程模型主要有栅格(GRID)、不规则三角网(TINs)、矢量(VECTOR)3种形式,工作中可以根据所用模拟模型的结构方式来采用三者之一。在本文的研究过程中采用栅格形式数据进行试验研究,并以ARCINFO为数据处理平台。首先将1:25万基础数据中的矢量等高线数据转换成TIN格式的数据,最终插值成分辨率为100m的栅格数据。
2数字高程流域水系模型原理
本文利用Martz和Garbrecht开发的数字高程流域水系模型进行数字流域划分处理。该模型是1种数字河网模型,它具有判断栅格水流流向、划分流域分水线、自动生成河网及子流域等功能。
2.1DEM预处理
由于研究过程中的栅格数据由矢量数据插值生成,数据中难免存在凹陷点或者无值网格等数据方面的缺陷,因此必须对数据进行预处理。DEM的预处理过程包括数据的平滑、凹陷点的填充。平滑处理主要是消除栅格化、投影转换过程中对高程数据重采样而产生的无值网格以及凹陷点,实际工作中一般采用9个点1组的平滑处理。由于平滑处理对整个DEM数值均有影响,且不能消除大面积的凹陷点集,因此必须对凹陷点进行填充处理。凹陷点是指四周高中间低的1个或1组栅格点,为了创建1个具有“水文”意义的DEM,所有的凹陷点必须处理。一般采用填充方法,先找出凹陷点周围最低栅格,然后将凹陷点所在栅格单元高程值垫高至最低栅格单元的高程值。
2.2格网流向的确定
利用预处理过的DEM,可以计算栅格区域水流流向及水流的汇集点,这种算法称为D8算法。D8算法的基本原理可以简单的描述为:水往低处流,即中间的栅格单元水流流向定义为邻近8个格网中坡度最陡的单元。坡度按下式计算:
式中hi 是格网单元高程,hj是相邻格网高程,D是2个格网中心之间的距离。若为水平、垂直方向相邻,D为格网分辨率;而在对角线方向上,D为格网分辨率。流动的8个方向用不同的代码编码。为了具体说明,建立1个6×6的栅格数据模型(图1)。图2为相应的格网流向图,图中的箭头表示格网单元内水的流向(为了直观,用不同方向的箭头代替编码值)。通过每个格网单元从高处向下游进行水流方向的寻径,整个流域格网单元之间连通性的水流方向栅格模型就建立起来了(图3),从而可以生成区域河网图。与此同时,用最陡坡度原则确定的水流路径,计算任一栅格单元上的汇水面积(该汇水面积的量值以栅格数目表示),从而建立了栅格汇水面积数据模型(图3)。

图1 栅格高程图 图2 栅格内流向图 图3 生长的河网图2.3河网的生成
当栅格流向格网数据模型和水流汇水格网数据模型建立之后,就可用来生成流域河网。在生成流域河网时有2个关键参数:最小水道给养面积阈值和最小水道长度。
2.3.1最小水道给养面积阈值
根据O’Callaghan和Mark提出的河网生成原理,最小水道给养面积阈值是指形成永久性水道必需的集水面积。当上游积水区面积等于阀值面积时,该格点为水道的起始点。流域内积水区面积超过该阈值的格点即定义为水道。
2.3.2最小水道长度
按照给定的最小水道给养面积阈值,根据水流汇集格网数据模型可以生成流域河网。河网中可能存在很短的1级水道,这些水道可能是伪水道,如:位于河谷两边的凹痕或沟壑的出口,因此给定另外1个参数:最小水道长度值。倘若1级水道的累计长度小于给定的参数,则认为该水道为伪水道,将其从河网图中删除。

图4 根据D8算法生成的河网图图4给出的最小水道给养面积阈值为80 hm2、最小水道长度为1 200 m时所生成河网的一部分。图中粗线条为1:25万地理数据中的实际河流线,细线条为生成的河网。从图中可以看出,生成的河网主干大部分被实际河流线覆盖,但在图中右上部分存在许多伪河道。这是因为DEM虽然经过预处理,但其内部可能存在着平坦区域。这些平坦区域可能是原来就存在,也可能是预处理填平处理后形成的。在这些平坦区域内部河道就无法产生,而连接平地两端边缘的水流聚集格网点形成了与实际河道不符的伪河道。
对于这个问题的解决,在试验中采用了美国德克萨斯大学Maidment提出的“burn-in”算法。其基本思路是利用已有的水系数据对数字高程数据进行处理。试验使用的1:25万基础地理数据中包含了线状水系数据,首先将它转换成栅格格式数据,其范围、分辨率与使用的数字高程数据一致,这样就可将水系数据与高程数据进行栅格运算。在运算过程中,将高程数据中与水系数据相重叠的部分高程值整体减小1个值,而其它部分高程值保持不变,这样就使高程数据中水系部分的高程值整体上比其它区域高程值略低,从而使水系嵌入到数字高程数据中,然后再采用D8算法就可以较准确地生成流域河网。图5即为采用“burn-in”算法生成的流域河网,图例同图4。从图中可以看出,生成的河网的主干与实际河网非常一致,只不过是河网的详细程度上存在差别,这可以通过控制最小水道给养面积阀值与最小水道长度来改进。

图5 用“Burn-in”算法生成的河网2.4流域的确定
当河网生成后,就可按实际工作的需要,确定流域的界限,从而帮助我们明确具体的降水预报范围,并可以对研究范围内的区域进行分析,以便提取相应的参数。
确定流域的界限必须先要确定整个流域的出口,从流域出口格点沿河道向上游搜索每一条河道的积水区范围,对搜索到的所有栅格所占区域的边界进行勾画就可以确定总的流域界限。流域出口位置可以根据研究问题的需要从地图上找到其地理位置坐标,然后在栅格图上找到相应的行列号,作为参数提供给软件调用。图6为软件自动生成的流域界限,图中黑方块为出水口位置,虚线为流域界限。从图中可以看出,生成的流域界限基本上包括了实际的河网,将其栅格化,便可满足业务需要。

图6 程序生成的领域界限3结语
�(1) 利用TOPAZ软件,采用“Burn-in”算法,通过对1:25万地理高程数据的分析,可以生成与实际较为吻合的河网数据。在此基础上,可以进一步划定流域的分界线。所得分析结果可以用在流域降水预报中对河流、库区流域进行数字划分。
�(2) 在生成河网的过程中,对最小水道给养面积阈值和最小水道长度这2个参数的选择要经过多次试验。由于各地的地表水文属性存在差别,因此在选定这2个参数时可以考虑将研究区域进行分区,将地表水文属性类似的区域归为一类,并给每个区域设定不同的参数值。
(3) 河网的生成和流域的划分对地理高程数据较为敏感。在本文试验过程中使用的栅格地理数据是由矢量数据进行内插得到,与实际的地理高程值可能存在一定的差异,因此在分析过程中使用分辨率较高的地理高程数据可以得到更好的结果。

❸ 水文分析系统怎么下手

水文分析

水文分析是
DEM
数据应用的一个重要方面。利用
DEM
生成的集水流域和水流网络,
成为大多数地表水文分析模型的主要输入数据。
表面水文分析模型研究与地表水流有关的各
种自然现象例如洪水水位及泛滥情况,
划定受污染源影响的地区,
预测当某一地区的地貌改
变时对整个地区将造成的影响等。

基于
DEM
地表水文分析的主要内容是利用水文分析工具提取地表水流径流模型的水流
方向、汇流累积量、水流长度、河流网络(包括河流网络的分级等)以及对研究区的流域进
行分割等。
通过对这些基本水文因子的提取和分析,
可再现水
流的流动过程,最终完成水文分析过程。

本章主要介绍
ArcGIS
水文分析模块的应用。
ArcGIS
提供
的水文分析模块主要用来建立地表水的运动模型,
辅助分析地
表水流从哪里产生以及要流向何处,
再现水流的流动过程。

时,
通过水文分析工具的应用,
有助于了解排水系统和地表水
流过程的一些基本概念和关键过程。

ArcGIS
将水文分析中的地表水流过程集合到
ArcToolbox
里,如图
11.1
所示。主要包括水流的地表模拟过程中的水流
方向确定、
洼地填平、
水流累计矩阵的生成、
沟谷网络的生成
以及流域的分割等。

本章
1

5
节主要是依据水文分析中的水文因子的提取过
程对
ArcGIS
中的水文分析工具逐一介绍。文中所用的
DEM
数据在光盘中
chp11
文件夹下的
tutor
文件夹里面,每个计算
过程以及每一节所产生的数据存放在
tutor
文件夹的
result
文件
夹里面,
文件名与书中所命名相同,
读者可以利用该数据进行
参照练习。本章最后一节还提供了三个水文分析应用的实例。

9.1
无洼地
DEM
生成

DEM
一般被认为是比较光滑的地形表面的模拟,但是由于内插的原因以及一些真实地
形(如喀斯特地貌)的存在,使得
DEM
表面存在着一些凹陷的区域。这些区域在进行地表
水流模拟时,
由于低高程栅格的存在,
使得在进行水流流向计算时在该区域得到不合理的或
错误的水流方向。因此,在进行水流方向的计算之前,应该首先对原始
DEM
数据进行洼地
填充,得到无洼地的
DEM


洼地填充的基本过程是先利用水流方向数据计算出
DEM
数据中的洼地区域,
然后计算
出这些的洼地区域的洼地深度,最后以这些洼地深度为参考而设定填充阈值进行洼地填充。

9.1.1
水流方向提取

水流方向是指水流离开每一个栅格单元时的指向。

ArcGIS
中通过
将中心栅格的
8
个邻域栅格编码,
水流方向便可由其中的某一值来确定,

11.2

水流流向编码


11.1 ArcToolBox
中的

水文分析模块

栅格方向编码如图
11.2
所示。

例如:如果中心栅格的水流流向左边,则其水流方向被赋值为
16
。输出的方向值以
2
的幂值指定是因为存在栅格水流方向不能确定的情况,
此时需将数个方向值相加,
这样在后
续处理中从相加结果便可以确定相加时中心栅格的邻域栅格状况。

水流的流向是通过计算中心栅格与邻域栅格的最大距离权落差来确定。
距离权落差是指
中心栅格与邻域栅格的高程差除以两栅格间的距离,
栅格间的距离与方向有关,
如果邻域栅
格对中心栅格的方向值为
2

8

32

128
,则栅格间的距离为
2
倍的栅格大小,否则距离

1


ArcGIS
中的水流方向是利用
D8
算法(最大距离权落差)来计算水流方向的。具体计
算步骤如下:

1.


ArcMap
中单击
ArcToolbox
图标,启动
ArcToolbox


2.

展开
Spatial Analysis Tools
工具箱,打开
Hydrology
工具集;

3.

双击
Flow Direction
工具,弹出(如图
11.3
所示)水流方向(
Flow Direction

计算对话框;


1


I
nput surface data
文本框中选择输入的
DEM
数据:
dem



2



Output flow direction raster
文本框中
命名计算出来的水流方向文件名为
flowdir
,并选择保存路径;


3





Force
all
edge
cells
to
flow
outward(Optional)
前的复选框,指所有

DEM
数据边缘的栅格的水流方向全
部是流出
DEM
数据区域。默认为不选择。这一步为可选步骤;


4




drop
raster

drop
raster
是该栅格在其水流方向上与其临近的栅格之间的高程差与
距离的比值,
以百分比的形式记录,
它反映了在整个区域中最大坡降的分布情况。
这一
步为可选步骤;


5




OK
按钮,完成操作。按钮,完成操作。计算出的水流方向数据结果如图
11.4

示。


11.3
水流方向
Flow Direction
计算对话框

9.1.2
洼地计算

洼地区域是水流方向不合理的地方,
可以通过水流方向来判断哪些地方是洼地,
然后对
洼地填充。
但是,
并不是所有的洼地区域都是由于数据的误差造成的,
有很多洼地是地表形
态的真实反映。
因此,在进行洼地填充之前,
必须计算洼地深度,
判断哪些地区是由于数据
误差造成的洼地而哪些地区又是真实的地表形态,
然后在洼地填充的过程中,
设置合理的填
充阈值。

1.

洼地提取


1




Hydrology
工具集中的
Sink
工具,
弹出洼地计算对话框,如图
11.5
所示;


2



Input flow direction raster
文本框中,
选择水流方向数据
flowdir



3



Output raster
文本框中,选择存放的
路径以及重新命名输出文件为
sink



11.4
利用
Flow Direction
工具计算出来的水流方向图


11.5
洼地计算对话框


4




OK
按钮,完成操作。计算结果如图
11.6
所示,深色的区域是洼地。

2.

洼地深度计算


1




Hydrology
工具集中的
Watershed
工具,弹出流域计算对话框,如图
11.7
所示,
它用来计算洼地的贡献区域;


2



Input flow direction raster
文本框中
选择水流方向数据
flowdir
,在
Input
raster or feature pour point
文本框中选
择洼地数据
sink
,在
pour
point
field
文本框中选择
value



3



Output
raster
文本框中设置输出数
据的名称为
watershsink



4




OK
按钮,完成操作。计算出的
洼地贡献区域如图
11.8
所示;


11.7
洼地贡献区域计算对话窗口(
watershed



11.6

计算出来的洼地区域


5



算每个洼地所形成的贡献区域的最低高程;

1


打开
Spatial Analysis Tools
工具箱中
Zonal
工具集,双击
Zonal Statistic
工具,弹出
如图
11.9
所示的分区统计对话框;

2



Input raster or feature zonal data
文本框中,选择洼地贡献区域数据
watershsink


3



Input value raster
文本框中选择
dem
作为
value raster


4



Output raster
文本框中将输出数
据文件命名为
zonalmin
,存放路径
保持不变;

5


在统计类型选择的下拉菜单中选
择最小值(
MINIMUM
)作为统计
类型;

6


单击
OK
按钮,完成操作。


6



算每个洼地贡献区域出口的最低高程即洼地出水口高程;

1


打开
Spatial Analysis Tools
工具箱中
Zonal
工具集,双击
Zonal Fill
工具,弹出如图
11.10
所示的
Zone Fill
对话框;

2



Input zone raster
文本框中选择
watershsink
,在
Input weight raster
文本框中选择
dem
,在
Output raster
文本框中将输出数据命名改为
zonalmax


3


单击
OK
按钮,完成操作。


7



算洼地深度。


11.8

计算出来的洼地贡献区域


11.9
分区统计对话框

❹ 简述DES算法和RSA算法的基本思想

DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:
1�初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。
2�逆置换
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

RSA算法简介
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。

RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。

密钥对的产生。选择两个大素数,p 和q 。计算:

n = p * q

然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足

e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )

其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。

加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:

ci = mi^e ( mod n ) ( a )

解密时作如下计算:

mi = ci^d ( mod n ) ( b )

RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。

RSA 的安全性。

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。

RSA的速度。

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

RSA的选择密文攻击。

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )^d = X^d *M^d mod n

前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。

RSA的公共模数攻击。

若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:

C1 = P^e1 mod n

C2 = P^e2 mod n

密码分析者知道n、e1、e2、C1和C2,就能得到P。

因为e1和e2互质,故用Euclidean算法能找到r和s,满足:

r * e1 + s * e2 = 1

假设r为负数,需再用Euclidean算法计算C1^(-1),则

( C1^(-1) )^(-r) * C2^s = P mod n

另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。

RSA的小指数攻击。 有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

❺ DES算法的原理及演讲过程

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

❻ 求一个数的平方根怎么算

开方的计算步骤:

1、将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开(竖式中的11’56),分成几段,表示所求平方根是几位数;

2、根据左边第一段里的数,求得平方根的最高位上的数(竖式中的3);

3、从第一段的数减去最高位上数的平方,在它们的差的右边写上第二段数组成第一个余数(竖式中的256);

4、把求得的最高位数乘以2去试除第一个余数,所得的最大整数作为试商(2×30除256,所得的最大整数是 4,即试商是4);

5、用商的最高位数的2倍加上这个试商再乘以试商.如果所得的积小于或等于余数,试商就是平方根的第二位数;如果所得的积大于余数,就把试商减小再试(竖式中(2×30+4)×4=256,说明试商4就是平方根的第二位数);

6、用同样的方法,继续求平方根的其他各位上的数.

对于那些开方开不尽的数,用这种方法算两三次精度就很可观了,一般达到小数点后好几位。实际中这种算法也是计算机用于开方的算法。

❼ DES算法和RSA算法的区别

DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步: 1初始置换 其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。 2逆置换 经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。 RSA算法简介 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算: n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。 加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是: ci = mi^e ( mod n ) ( a ) 解密时作如下计算: mi = ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。 RSA 的安全性。 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 RSA的速度。 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 RSA的选择密文攻击。 RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构: ( XM )^d = X^d *M^d mod n 前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。 RSA的公共模数攻击。 若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则: C1 = P^e1 mod n C2 = P^e2 mod n 密码分析者知道n、e1、e2、C1和C2,就能得到P。 因为e1和e2互质,故用Euclidean算法能找到r和s,满足: r * e1 + s * e2 = 1 假设r为负数,需再用Euclidean算法计算C1^(-1),则 ( C1^(-1) )^(-r) * C2^s = P mod n 另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。 RSA的小指数攻击。 有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。 RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。参考资料: http://www.radyinfo.com/KNOWLEDGE/RSA.HTM

❽ 栅格扩散计算中有一种算法是D8算法,但是小弟不知道具体的实现方法

水文分析就是按照D8算法来的

❾ 配合物的空间构型怎么判断,要具体算法或者解析 不要让我背的 菜鸟别来

首先要搞清楚中心原子的原子轨道为什么要杂化成杂化轨道?这完全是为了与配位体形成化学键后释放更多的能量,使整个分子能量最低。

怎样就算能量最低?(1)成键的电子对(对于配位键由配体单方面提供,普通共价键成键原子各提供一个)尽可能相互远离,库伦斥力最小,斥力势能最小。(2)形成化学键时轨道重叠程度最大。后一因素与楼主的问题无直接关联。

什么叫杂化?就是将各种不同的原子轨道按一定的比例组合。例如sp3杂化轨道就是由1/4个s轨道和3/4个p轨道组合成的。一个s轨道与三个p轨道共可以组合成四个sp3轨道(具体细节化学专业大学3年级才会学到),这四个轨道恰好满足彼此尽可能远离(四面体构型),用这样的杂化轨道和配体孤对电子轨道成键既可使轨道重叠程度最大,同时又使四个成键电子对尽可能远离,从而能量最低。

对于前三个例子,中心原子电子构型都是d10,即d轨道不可能参与成键。只能是其上方的4s和4p轨道(根据周围配体的多少)杂化成sp,sp2,sp3轨道。对第一个例子中心原子与四个配体形成四个配键,要使四个成键电子对尽可能彼此远离,四对电子必须呈四面体构型(键角最大109.5°,而假定是平面正方形键角只有90°,成键电子对彼此斥力增大,能量升高),因此第一个例子必须采取sp3杂化。而假定是sp杂化则除了两个sp杂化轨道外,两个4p轨道也要和配体成键,容易知道最小键角一定小于109.5°【注】(楼主不妨自己画个图试试)。

【注】虽然这种情况下,其它键角可能比109.5大,但注意库伦力与距离平方成反比,容易理解键角平均分布斥力最小。

第二个例子,中心原子周围只有两个配体成键,中心原子只需提供两个空轨道,那么究竟是提供一个不杂化的s和一个p成键,还是提供两个sp对能量降低更有利,请楼主自行判断。第三个例子类似,自行判断。

第四个例子,也是四个配体,会不会也形成四面体构型(似乎电子对之间斥力最小)呢?不会!这是由于中心原子为d8构型,d轨道可以参与成键时,不会放着不用而用能量更高的轨道去成键。原先3d轨道中两个自旋平行的单电子在成键时,先挤到同一轨道中(能量略有升高),空出一个d轨道用于后面形成配建,有四个配体就要形成四个杂化轨道,显然应使用一个3d,一个4s和两个4p组合成4个杂化轨道。组合后的四个dsp2杂化轨道呈平面正方形而不是四面体(这是由于d轨道的形状和p轨道不同而造成的。和前面一样,其中道理难以简单说明,必须学到结构化学或量子化学才能讨论)。从而[Ni(CN)4]2-只能采取平面正方形结构。

如有不明欢迎追问。

❿ 在ArcGIS中如何计算地形湿度指数

Arcmap中地形指数的计算2009-10-10 16:19
其他地方找不到地形指数的计算方法。这是自己总结的,不知道对不对,欢迎讨论指正。

基本公式

原始数据:DEM栅格

过程数据:洼地填充后的洼地流向flowdirfill和汇流累积量flowacc。二者计算过程参考汤国安地理信息系统空间分析实验教程第十一章.

1计算SCA(specific catchment area)

SCA=CA/flow width

CA=flowacc*单位栅格的面积(分辨率^2)

(1) 计算汇水面积CA。

通过hydrology模块,计算出填充洼地后的flowacc*分辨率平方得到汇水面积CA

(2)确定流向宽度flow width。

对于D8算法而言,当流向为格网对角线方向时,流向宽度为sqrt(2)*格网间距L;东西南北四方向的,流向宽度为格网间距L。

经洼地填充后生成的Flowdirfill即8个流向,用con条件语句进行计算,指定东西南北方向的格网间距为L,对角线方向的为sqrt(2)*L。得到流向宽度。

Example

指定分辨率为25米,条件语句如下:

con([flowdirfill] == 1,25,[flowdirfill] == 4,25,[flowdirfill] == 16,25,[flowdirfill] == 64,25,[flowdirfill] == 2,25*Sqrt(2),[flowdirfill] == 8,25*Sqrt(2),[flowdirfill] == 32,25*Sqrt(2),[flowdirfill] == 128,25*Sqrt(2))

(3)计算SCA。

将汇水面积除以流向宽度得到单位汇水面积。

2计算slope

用arctoolbox里面的slope功能直接对原始数据进行坡度的求取。注意得到的坡度单位是°degree

3计算地形指数

用spatial analysis tools里面的raster calculator工具进行计算

得到地形指数值,从porperties中可以得到地形指数的最小值最大值平均值等统计指标。

============================我是问题的分割线============================

阅读全文

与流向分析中的d8算法怎么弄相关的资料

热点内容
用VF命令 浏览:948
解压速度14m 浏览:327
php获取httpheader 浏览:294
什么软件可以修改pdf文件 浏览:865
命令行截图软件 浏览:732
程序员加班多 浏览:123
android设置view的背景 浏览:684
u盘加密工具哪个好 浏览:571
php生成html模板引擎 浏览:26
如何设置app封杀 浏览:823
手机将照片弄成压缩包 浏览:221
卡联购卡盟官网源码 浏览:867
网页弄成pdf 浏览:223
dos的删除命令 浏览:309
区块链的加密物联网传输 浏览:572
如何卸载桌面布局已定的app 浏览:678
vs重置命令 浏览:613
如何学会学习python 浏览:227
程序员钉钉 浏览:758
gcc编译器生成目标文件 浏览:158