999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ArcEngine的農村土地承包經營權數據庫建設

2018-04-18 09:51:44于中偉
地理空間信息 2018年11期
關鍵詞:數據庫

于中偉

(1.沈陽市勘察測繪研究院,遼寧 沈陽 110014)

農村土地承包經營權確權登記的主要目的是解決承包地塊面積不準、空間位置不明、四至關系不清等問題,最終形成權屬合法、界址清楚、面積準確、圖數實地一致的農村土地承包經營權調查成果。農村土地確權登記數據庫是開展農村土地承包經營權確權登記最重要的成果之一。確權登記數據庫主要包括用于農村土地承包經營權調查、確權登記的地理信息數據和權屬數據,權屬數據又包括業務數據和權屬資料數據。NY/T 2539-2016《農村土地承包經營權確權登記數據庫規范》對數據庫的分層、圖層名稱、字段名稱以及約束信息等進行了嚴格定義,實現了數據庫成果的規范化和標準化。

農村土地承包經營權數據庫建設是先將入庫后的實地測量圖形數據與權屬調查信息進行掛接,形成公示結果和待解決記錄表;再根據公示反饋的信息修改數據庫,整理完善承包地塊屬性,形成界址信息;然后利用質量檢查功能對數據庫進行檢查;最終形成無質量問題的國家標準格式數據。

1 工作流程

根據NY/T 2539-2016《農村土地承包經營權確權登記數據庫規范》,農村土地確權登記標準數據庫包括地理信息數據和權屬數據共26個圖層。實際作業中,圖形地理信息成果主要包括地塊(DK)、界址點(JZD)、界址線(JZX)等圖層,權屬數據主要包括發包方(FBF)、承包方(CBF)、承包地塊信息(CBDKXX)、承包合同(CBHT)、家庭成員(CBF_JTCY)、承包經營權證登記簿(CBJYQZDJB)等表格。本文著重討論如何在程序中實現數據庫圖形地理信息成果與權屬數據的自動掛接,并形成符合國家規范的數據庫。

1)為標準數據庫添加DKYBM過渡字段。為了方便地塊與村組填寫的CBDKXX表進行對應,地塊預編碼采用01001的編碼方式,而不是規范中要求的順序碼,其中01為承包方在村組中的順序碼,001為承包方所有的地塊順序碼。

2)將利用CASS或ArcGIS等繪圖軟件繪制的地塊圖層導入標準數據庫的DK圖層中,并將預編碼放入DK預編碼中,以實現圖形數據與屬性數據的掛接。針對DK圖層,根據地塊編碼規則按村組對所有地塊進行編碼,此時DK圖層中的每個要素均對應一個預編碼DKYBM和一個規范編碼DKBM。

3)順序讀入村組填寫的FBF表,CBF表和CBDKXX表,并將相關屬性信息入庫。發包方入庫時,僅涉及FBF表;承包方入庫時,共涉及CBF、CBF_JTCY、CBHT和CBJYQZDJB四個屬性表;執行承包地塊入庫時,涉及DK圖層和CBDKXX表。承包地塊信息入庫后,可將DKYBM字段刪除。

4)生成JZD、JZX圖層,實現四至等屬性的自動識別錄入,并對數據庫進行檢查,形成國家標準格式的數據庫。

2 關鍵技術的實現

1)為了避免在讀取和保存Excel時不區別版本,本文引用了NetOffice控件,在程序中添加NetOffice.dll、ExcelApi.dll和VBIDEApi.dll引用,相關代碼為:

‘添加引用

using NetOffice.ExcelApi;

using NetOffice.ExcelApi.Enums;

‘初始化Excel實例,并打開工作簿

NetOffice.ExcelApi.Application application= new NetOffice.ExcelApi.Application();

Workbook workbook= application.Workbooks.Add(excelPath);

Worksheet worksheet= workbook.Worksheets[1] as Worksheet;

‘讀取普通文本單元格

string FBFMC=worksheet.Range("C8").Text.ToString();

‘針對數據序列,驗證單元格

char[] ch= new char[] { ',' };

string[] validation= worksheet.Range("D11").Validation.Formula1.Split(ch);

‘退出并釋放

application.Quit();

application.Dispose();

2)由于需將調查表格信息寫入或更新到mdb數據庫中,會多次執行SQL語句,可將常用操作封裝成類,予以調用。例如,在Access Tools類中,包括以下字段和方法:

public OleDbConnection Conn;

public string ConnString; ‘鏈接字符串

DataTable SelectToDataTable(string SQL); ‘根據SQL返回DataTable數據表

OleDbDataAdapter SelectToOleDbDataAdapter(string SQL); ‘根據SQL返回OleDbDataAdapter

int ExecuteSQLNonquery(string SQL); ‘執行SQL,適用于刪除、更新

AccessTools(string Dbpath); ‘構造函數,鏈接數據庫

void Close(); ‘關閉數據鏈接

3)在對DK圖層進行統一編碼時,首先需獲得DK圖層的幾何重心,可通過程序依次調用GP工具的FeatureToPoint和AddXY工具,將DK轉為點,并添加X、Y坐標。執行后的DK_FeatureToPoint圖層即為DK圖層對應的幾何重心圖層,具有嚴格對應的ObjectID。采用GP調用FeatureToPoint工具的代碼為:

ESRI.ArcGIS.Geoprocessor.Geoprocessor gp= new Geoprocessor();

FeatureToPoint featureToPoint= new FeatureToPoint();

featureToPoint.in_features= mdbPath + "\DK";

featureToPoint.out_feature_class= mdbPath + "\DK_FeatureToPoint";

IGeoProcessorResult result=gp.Execute(featureToPoint,null) as IGeoProcessorResult;

然后獲取DK圖層的包絡線,即圖層的最小外接矩形。根據該包絡線構建一定步長的正方形框,自左上角遍歷正方形框,同一個正方形框中的地塊僅比較幾何重心的橫向(東西)關系,從而可按自北向南、自西向東的順序對所有地塊進行編碼。執行編碼賦值時,可直接采用SQL語句的方式,根據添加的POINT_X和POINT_Y字段設立條件關系,提高執行效率。JZD圖層的編碼方法與之類似。部分關鍵代碼為:

IFeatureClass featureClass= featureWorkspace.OpenFeatureClass("DK");

IGeoDataset geoDataset= featureClass as IGeoDataset;

IEnvelope envelope= geoDataset.Extent; ‘獲得DK圖層的包絡線

double buchang= 50.0; ‘設置一定步長的正方形框

int xCount= Math.Ceiling((envelope.XMax-envelope.XMin) / buchang);

int yCount= Math.Ceiling((envelope.YMax-envelope.YMin) / buchang);

for (int i= 0; i < yCount; i++)

{

for (int j= 0; j < xCount; j++)

{

‘求出正方形框四角的坐標

xmin= envelope.XMin + j * buchang);

ymin= envelope.YMax-(i + 1) * buchang;

xmax= envelope.XMin + (j + 1) * buchang;

ymax= envelope.YMax-i * buchang;

sql= "select * from DK_FeatureToPoint WHERE POINT_X>=" + xmin.ToString() + " and POINT_X<" + xmax.ToString() + " and POINT_Y <=" + ymax.ToString() + " and POINT_Y >" + ymin.ToString();

dt= accessTools.SelectToDataTable(sql); ‘選中正方形框內的所有點

foreach (DataRow row in dt.Rows)

{

list.Add(Convert.ToInt16(row["ORIG_FID"].ToString()),Convert.ToDouble(row["POINT_X"].ToString()));

}

‘按照X坐標進行排序,key值即為ObjectID

List<KeyValuePair<int, double>> lstorder= list.OrderBy(c=> c.Value).ToList();

}

} ‘再根據lstorder,采用SQL語句的update進行ZD的編碼更新操作

4)將圖形導入標準數據庫,并進行相關拓撲錯誤處理后,可進一步實現地塊四至的自動讀取。算法通過遍歷DK圖層中的要素,利用空間關系找出當前地塊的相鄰地塊,并根據相鄰地塊與當前地塊的幾何重心連線計算方位角;再根據方位角的大小判斷四至關系,并更新到地塊記錄的四至字段中。實踐證明,該方法自動讀取的成功率在90%以上。其部分代碼為:

‘遍歷DK圖層

IPoint gravityDK= new PointClass(); ‘用于存放DK要素的幾何重心

ISpatialFilter spatialFilter= new SpatialFilterClass(); ‘用于空間位置查詢

string dongzhi=””,xizhi=””,nanzhi=””,beizhi=””; ‘用于存放四至

foreach (DataRow rowDK in dtDK.Rows){

‘獲得當前DK要素

featureDK= featureClassDK.GetFeature(int.Parse(rowDK["OBJECTID"].ToString()));

‘利用SQL查詢方式從DK_FeatureToPoint表中獲得DK的幾何重心,比使用ArcEngine游標效率高

sql="select * from DK_FeatureToPoint where ORIG_FID="+rowDK["OBJECTID"].ToString();

dt= accessTools.SelectToDataTable(sql);

rowDK_FeatureToPoint=dt.Rows[0];

gravityDK.PutCoords(Convert.ToDouble(rowDK_FeatureToPoint["POINT_X"].ToString()),Convert.ToDouble(rowDK_FeatureToPoint["POINT_Y"].ToString()));

‘查找當前DK要素的相鄰地塊

spatialFilter.Geometry= featureDK.ShapeCopy;

spatialFilter.SpatialRel= esriSpatialRelEnum.esriSpatialRelIntersects;

featureCursor= featureClassDK.Search(spatialFilter, false);

feature= featureCursor.NextFeature();

while(feature!=null)

{

‘獲取相鄰要素的幾何中心并計算方位角,根據方位角判定四至并存入對應的字符串

feature= featureCursor.NextFeature();

}

featureDK.set_Value(feature.Fields.FindField("DKDZ"),dongzhi); ‘設置東至

‘釋放查詢游標featureCursor

System.Runtime.InteropServices.Marshal.ReleaseComObje ct(featureCursor);

}

3 需要注意的問題

1)由于FBF表、CBF表和CBDKXX表均由村組填寫,水平參差不齊,為了避免Excel在讀取或寫入數據庫時的異常報錯(或錯誤信息較多),在根據NY/T 2537-2014《農村土地承包經營權調查規程》設計數據庫模板時,可將某些字段的強制性要求設計為弱強制性,如相關必填字段可設計為空,限制長度的字段可先不做檢查,而在完成數據庫建設后統一執行數據庫檢查程序。

2)在向村組下發FBF表、CBF表和CBDKXX表時,不應直接采取NY/T 2537-2014《農村土地承包經營權調查規程》中定義的相關表格樣式,如CBF表中的家庭成員列未包含是否共有人等字段,但數據庫中卻包含該字段。因此,應該根據NY/T 2539-2016《農村土地承包經營權確權登記數據庫規范》中的數據庫字段設計完整的表格,并在完成數據庫建設后根據NY/T 2537-2014《農村土地承包經營權調查規程》執行相應表格規范和統一輸出。

3)在批量讀取執行表格信息時,應具有一定的容錯能力。在某個Excel讀取或寫入失敗后,應自動跳過,并在批量執行結束后,進行錯誤信息提示。在對數據庫表執行增加、更新、刪除等遍歷操作時,考慮到執行效率,應盡量使用SQL語句的方式,并在操作完成后,及時對表進行關閉,以避免出現“無法打開表格”等異常。在利用ArcEngine執行遍歷操作時,應及時釋放游標。

4 結 語

在沈陽市開展農村土地承包經營權確權登記試點的過程中,由作業單位實際負責承包地塊的測繪工作,并出具具體的CBF、FBF、CBDKXX等表格樣式;由村組負責完成表格填寫和權屬資料整理。結合該工作模式,本文利用Esri公司提供的ArcEngine二次開發技術,實現了表格權屬信息與測繪圖形信息的自動關聯,有效調動了村組在信息調查方面的優勢和動力,不僅提高了工作效率,而且節約了作業成本,在實際作業中取得了較好的效果。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产精品精品视频| 亚洲第一视频免费在线| 国产三级毛片| 中文字幕精品一区二区三区视频| 色哟哟国产精品| 丁香五月激情图片| 久久香蕉国产线看观看精品蕉| 97成人在线观看| 日韩视频免费| 又黄又爽视频好爽视频| 国产精品大尺度尺度视频| 国产精品亚欧美一区二区三区| 精品乱码久久久久久久| 波多野结衣爽到高潮漏水大喷| 天堂av综合网| 国产视频 第一页| 国产三级精品三级在线观看| 精品一區二區久久久久久久網站| 亚洲精品福利视频| 国产精品亚洲精品爽爽| 美女视频黄频a免费高清不卡| 亚洲男人的天堂久久香蕉网| 国产精品va免费视频| av一区二区三区高清久久| 成人毛片免费在线观看| 国产尤物jk自慰制服喷水| 国产精品一区二区不卡的视频| 91丨九色丨首页在线播放 | 日本色综合网| 久久精品国产91久久综合麻豆自制 | 无码国产伊人| 伊人久久大线影院首页| 国产手机在线小视频免费观看| 97在线观看视频免费| 久久国产亚洲偷自| 国产精品55夜色66夜色| 免费 国产 无码久久久| 亚洲狠狠婷婷综合久久久久| 国产91丝袜在线播放动漫| 日本www在线视频| 国产一区二区三区在线无码| 国产91精选在线观看| 亚洲精品无码人妻无码| 欧美在线黄| 国产白浆视频| 666精品国产精品亚洲| 综1合AV在线播放| 亚洲天堂视频在线播放| 欧美笫一页| 日韩欧美国产精品| 亚洲综合一区国产精品| 72种姿势欧美久久久大黄蕉| 91免费国产高清观看| 久久成人国产精品免费软件| 伊人久久青草青青综合| 国产一在线| 波多野结衣一区二区三区AV| 成人免费网站久久久| 亚洲最大福利网站| 呦女精品网站| 亚洲永久色| 国产精品粉嫩| 中文字幕调教一区二区视频| 热久久这里是精品6免费观看| 亚洲综合色区在线播放2019| 日韩一级毛一欧美一国产| 国产 在线视频无码| 5555国产在线观看| 嫩草国产在线| 国产第一页免费浮力影院| 国产AV毛片| 免费在线国产一区二区三区精品| 国产精品手机在线播放| 精品撒尿视频一区二区三区| 日韩欧美中文字幕在线韩免费| 久久网欧美| 99精品伊人久久久大香线蕉 | 中文无码精品A∨在线观看不卡| 97国产在线播放| 精品国产自在在线在线观看| 高清久久精品亚洲日韩Av| 精品夜恋影院亚洲欧洲|