導航:首頁 > 源碼編譯 > 流向分析中的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演算法怎麼弄相關的資料

熱點內容
命令行截圖軟體 瀏覽:732
程序員加班多 瀏覽:123
android設置view的背景 瀏覽:684
u盤加密工具哪個好 瀏覽:571
php生成html模板引擎 瀏覽:26
如何設置app封殺 瀏覽:823
手機將照片弄成壓縮包 瀏覽:221
卡聯購卡盟官網源碼 瀏覽:867
網頁弄成pdf 瀏覽:223
dos的刪除命令 瀏覽:309
區塊鏈的加密物聯網傳輸 瀏覽:571
如何卸載桌面布局已定的app 瀏覽:677
vs重置命令 瀏覽:613
如何學會學習python 瀏覽:227
程序員釘釘 瀏覽:758
gcc編譯器生成目標文件 瀏覽:157
怎麼改伺服器ip地址嗎 瀏覽:56
cmd輸入命令斷開連接 瀏覽:911
二線大廠程序員員工年薪 瀏覽:988
程序員能從事導彈行業嗎 瀏覽:938