因為近期需要進行對某一區域內進行像元數量的統計,而arcgis內建的分割槽統計功能輸出的又是乙個柵格資料感覺不是我想要的,所以就自己編了這樣乙個小功能。話不多說,開始進入正題。
按照老習慣,每次要編**之前先梳理一下思路:
1、獲取柵格資料和向量資料(柵格資料是要統計的物件,向量資料是統計的區域)
2、獲取向量資料中要素的包絡範圍(ienvelope)並以此建立畫素塊(ipixelblock)用來儲存包絡範圍內柵格資料的像元值
3、遍歷向量資料中的要素根據判斷條件來統計像元個數
4、顯示輸出結果
1、定義全域性變數
long pixcount = 0; //記錄像元的個數
double xmin, ymin, xmax, ymax; //記錄地理座標範圍
int rowmin, columnmin, rowmax, columnmax; //記錄像元座標範圍
double geox, geoy; //地理座標
int red,green,blue;
2、獲取輸入資料
//獲取柵格圖層
irasterlayer rasterlayer = getlayer(combobox1_staticfile.text) as irasterlayer;
iraster raster = rasterlayer.raster;
iraster2 raster2 = raster as iraster2;//建立柵格資料
//獲取向量圖層
ifeaturelayer featurelayer = getlayer(combobox2_staticzone.text) as ifeaturelayer;
ifeaturecursor cursor = featurelayer.search(null, false); //向量游標
ifeature feature = cursor.nextfeature();
ipoint point = new pointclass();
3、遍歷向量資料中的要素,並統計各個要素內滿足條件的像元個數
while (feature != null)}}
messagebox.show("像元個數:" + pixcount.tostring());
小結:既然經歷了這個過程,就要總結一下在這中間所遇到的問題,要不然就白痛苦了哈哈。
1、ipixelblock的建立是通過柵格資料的createpixelblock函式來建立的,畫素塊的尺寸通過ipnt來確定
2、在將資料讀取到畫素塊中起始的座標也是通過ipnt來確定
3、判斷點線面的關係可以使用irelationaloperator介面
分區間統計
x 30,3060 declare t table id int primary key,col decimal 10,2 insert into t select 1,26 union all select 2,88 union all select 3,4 union all select 4,...
arcgis處理向量對向量的分割槽統計
一 解決的問題 一 對向量資料的任意欄位的分割槽統計 計算和 均值 最小值 二 實現對向量資料的類別欄位的分割槽統計,統計每個分割槽中各個類別的個數 注 arcgis desktop通過zonal 工具提供向量 或柵格 對柵格資料的分割槽統計功能 tools spatial analyst tool...
arcgis中分割槽統計中常見的錯誤
在arcgis分割槽統計中,會出現什麼不存在表名99999錯誤問題。有幾點注意事項 1.區域字段優先選擇fid 2.輸入賦值柵格的型別其實無論是整型或者小數柵格都可以的,與這個無關 3.如果分割槽統計不以 顯示的話,則命名沒有要求。如果以 顯示再連線到shp中的話,注意表名一定不要以數字開頭,以數字...