亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ArcGIS Engine與XML的通用空間數(shù)據(jù)建庫(kù)系統(tǒng)

        2018-04-27 08:19:40江,周
        地理空間信息 2018年4期
        關(guān)鍵詞:建庫(kù)字段空間數(shù)據(jù)

        李 江,周 浩

        (1.南京集艾思軟件科技有限公司,江蘇 南京 210009)

        各行各業(yè)已從信息化、數(shù)據(jù)庫(kù)化發(fā)展到數(shù)據(jù)整合、數(shù)據(jù)統(tǒng)一、云平臺(tái)階段,行業(yè)內(nèi)部需要將各種信息系統(tǒng)整合成一個(gè)平臺(tái),供行業(yè)內(nèi)云共享。但是目前,空間數(shù)據(jù)庫(kù)缺少通用性的建庫(kù)工具[1,2]。如何把已經(jīng)形成的大容量、多冗余數(shù)據(jù)進(jìn)行統(tǒng)一,是擺在各行業(yè)前面的頭等問(wèn)題。實(shí)現(xiàn)通用的空間數(shù)據(jù)建庫(kù)系統(tǒng),要求結(jié)合各行業(yè)自身特點(diǎn),把建庫(kù)工作簡(jiǎn)單化、標(biāo)準(zhǔn)化,把各種資源數(shù)據(jù)整合成一個(gè)統(tǒng)一平臺(tái),為大數(shù)據(jù)應(yīng)用打下堅(jiān)實(shí)的基礎(chǔ)。

        1 實(shí)現(xiàn)技術(shù)

        通用的空間數(shù)據(jù)建庫(kù)系統(tǒng),關(guān)鍵技術(shù)基于ArcGIS Engine與XML實(shí)現(xiàn),ArcGIS Engine利用接口負(fù)責(zé)空間數(shù)據(jù)的定義、輸入、處理與輸出;XML承擔(dān)著數(shù)據(jù)字典、數(shù)據(jù)配置、業(yè)務(wù)標(biāo)準(zhǔn)的角色。

        1.1 ArcGIS Engine

        ArcGIS Engine是ESRI公司產(chǎn)品。它有完備的嵌入式GIS 組件庫(kù)和工具庫(kù),使用ArcGIS Engine開(kāi)發(fā)的GIS應(yīng)用程序可以脫離ArcGIS Desktop而運(yùn)行。它的數(shù)據(jù)提取快速,是穩(wěn)定性好的多優(yōu)勢(shì)平臺(tái)[3]。

        1.2 XML

        可擴(kuò)展標(biāo)記語(yǔ)言XML[4]具有定義嚴(yán)格、結(jié)構(gòu)清晰、靈活易讀的特點(diǎn),可以用來(lái)描述各種復(fù)雜信息。XML可以對(duì)文檔和數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理,在不同業(yè)務(wù)之間進(jìn)行交換,實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容生成、企業(yè)集成和應(yīng)用開(kāi)發(fā)。

        2 實(shí)現(xiàn)方法

        基于ArcGIS Engine與XML實(shí)現(xiàn)通用的空間數(shù)據(jù)建庫(kù)系統(tǒng),技術(shù)實(shí)現(xiàn)的關(guān)鍵點(diǎn)主要在如下4個(gè)功能模塊:建庫(kù)坐標(biāo)系統(tǒng)開(kāi)發(fā);建庫(kù)數(shù)據(jù)字典開(kāi)發(fā);空間數(shù)據(jù)的導(dǎo)入匹配;空間數(shù)據(jù)的拓?fù)錂z查。

        2.1 坐標(biāo)系統(tǒng)開(kāi)發(fā)

        ArcGIS Engine提供了一系列對(duì)象供開(kāi)發(fā)者管理GIS系統(tǒng)的坐標(biāo)系統(tǒng),對(duì)大部分開(kāi)發(fā)者而言了解Proiected Coordinate System,GeographicCoordinateSystem,SpatialReferen ce Environment這3個(gè)組件類(lèi)是非常有必要的。對(duì)于高級(jí)開(kāi)發(fā)者而言,需要自定義坐標(biāo)系統(tǒng),了解更多對(duì)象,如Proiection,Datum,AngularUnit,Spheriod,PrimeMeridian和GeoTransformation等。通常使用3種方式定義坐標(biāo)系統(tǒng)。

        1)使用接口創(chuàng)建地理坐標(biāo)系對(duì)象:

        ISpatialReferenceFactory spatialReferenceFactory = new Spati alReferenceEnvironmentClass();

        ISpatialReference spatialReference = spatialReference Factory.CreateGeographicCoordinateSystem((int)esriSRGeo CSType.esriSRGeoCS_WGS1984);

        備注:ISpatialReference是地理坐標(biāo)系統(tǒng)對(duì)象接口,esriSRGeoCSType、esriSRProiCSType是空間坐標(biāo)枚舉。

        2)自定義坐標(biāo)系統(tǒng):

        用ArcMap工具定義好坐標(biāo)系后導(dǎo)出成pri文件,再用IspatialReferenceFactory中的CreateESRISpatialRefe renceFromPRJFile方法創(chuàng)建坐標(biāo)系。

        //定義投影坐標(biāo)工廠(chǎng)對(duì)象

        ISpatialReferenceFactory spatialReferenceFactory = new Spati alReferenceEnvironmentClass();

        //通過(guò)定義或者用戶(hù)導(dǎo)入的投影坐標(biāo)文件創(chuàng)建坐標(biāo)系統(tǒng) , 創(chuàng)建 SpatialReference

        IProjectedCoordinateSystem projectedCoordinateSystem =spatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(s trPath) as IProjectedCoordinateSystem;

        3)配置坐標(biāo)系統(tǒng)XML文件:

        //定義數(shù)據(jù)流對(duì)象

        StreamWriter objStreamWriter;

        //投影坐標(biāo)空模板或者用戶(hù)導(dǎo)入投影坐標(biāo)

        string strPath= Application.StartupPath + @"Models emp.prj";

        string str 1954= "PROJCS["Beijing_1954",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],P ARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian"," + jx + "],PARAMETER["Scale_Factor",1.0],PARA METER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]";

        //寫(xiě)入數(shù)據(jù)流

        objStreamWriter.WriteLine(str1954);

        2.2 數(shù)據(jù)字典開(kāi)發(fā)

        通用數(shù)據(jù)建庫(kù),首先要求數(shù)據(jù)詞典的靈活性。采用XML配置文件方式,實(shí)現(xiàn)數(shù)據(jù)字典的動(dòng)態(tài)加載,數(shù)據(jù)字典可以認(rèn)為是對(duì)數(shù)據(jù)的描述性信息以及數(shù)據(jù)間任何相關(guān)的附加信息[5]。根據(jù)通用建庫(kù)具體需求創(chuàng)建數(shù)據(jù)模型,在系統(tǒng)中設(shè)計(jì)匹配數(shù)據(jù)字典文件 ,用戶(hù)通過(guò)調(diào)整數(shù)據(jù)字典文件,靈活配置建庫(kù)模型。XML模型中包括設(shè)置字段名稱(chēng)、字段代碼、字段數(shù)據(jù)類(lèi)型、字段長(zhǎng)度、值域范圍、字段條件等。

        以 XML標(biāo)準(zhǔn)規(guī)范,建立數(shù)據(jù)字典清單:

        //空間數(shù)據(jù)-圖層信息節(jié)點(diǎn)配置

        //空間數(shù)據(jù)節(jié)點(diǎn)

        //注釋?zhuān)嚎臻g數(shù)據(jù)代碼

        //注釋?zhuān)嚎臻g數(shù)據(jù)名稱(chēng)

        //注釋?zhuān)嚎臻g數(shù)據(jù)類(lèi)型,0:注記;1:點(diǎn) ;2:線(xiàn) ;3:面

        //注釋?zhuān)嚎臻g數(shù)據(jù)所屬數(shù)據(jù)集

        //注釋?zhuān)嚎臻g數(shù)據(jù)必要性。M:必選;O:可選

        //空間數(shù)據(jù)-字段信息節(jié)點(diǎn)配置

        //空間數(shù)據(jù)代碼

        //注釋?zhuān)鹤侄涡蛱?hào)

        //注釋?zhuān)鹤侄蚊Q(chēng)

        //注釋?zhuān)鹤侄未a

        //注釋?zhuān)鹤侄螖?shù)據(jù)類(lèi)型

        //注釋?zhuān)鹤侄伍L(zhǎng)度

        //注釋?zhuān)褐涤蚍秶?gt;0:大于0

        //注釋?zhuān)鹤侄伪匾?。M:必選;O:可選

        //通過(guò)Linq獲取XML字典信息:

        //打開(kāi)Xml文檔

        XDocument xdocument = XDocument.Load(XmlFile); var Tabs = from TCs in xdocument.Element("Root").Elements() select new

        {

        //獲取所有空間數(shù)據(jù)基礎(chǔ)信息

        TCName = TCs.Element("TCName").Value,

        TCTabName = TCs.Element("TCTabName").Value ,

        TCLX = TCs.Element("TCLX").Value,

        ……

        };

        var Cols = from Colinfo in xdocument.Element("Root").Elements("空間數(shù)據(jù)代碼") select new

        {

        //獲取某空間數(shù)據(jù)表的字段信息XH = Colinfo.Element("XH").Value,

        ZDMC = Colinfo.Element("ZDMC").Value,ZDDM = Colinfo.Element("ZDDM").Value,……};

        2.3 空間數(shù)據(jù)導(dǎo)入匹配

        空間數(shù)據(jù)的導(dǎo)入格式,主要包括MDB、GDB、SHP、DWG等。需要將數(shù)據(jù)轉(zhuǎn)換成IFeatureClass,不同格式的數(shù)據(jù)需要不同的工作空間打開(kāi),再轉(zhuǎn)換成IfeatureClass。

        //創(chuàng)建mdb格式工作空間

        IWorkspaceFactory pmdbFC = new AccessWork spaceFactoryClass() ;

        //創(chuàng)建gdb格式工作空間

        FileGDBWorkspaceFactory pgdbFC =new FileGDB WorkspaceFactoryClass();

        //創(chuàng)建shp格式工作空間

        IWorkspaceFactory pshpFC = new Shapef i leWorkspaceFactor yClass();

        //創(chuàng)建dwg格式工作空間

        IWorkspaceFactory pcadFC = new CadWorkspace FactoryClass() ;

        上面通過(guò)對(duì)應(yīng)工作空間打開(kāi)數(shù)據(jù)源,并轉(zhuǎn)換成IfeatureClass,通過(guò)如下代碼可以進(jìn)行數(shù)據(jù)導(dǎo)入。

        //獲取IFeatureClass對(duì)象后,再循環(huán)獲取數(shù)據(jù)導(dǎo)入目標(biāo)數(shù)據(jù)集中:

        ITable m_pTable = pFeatureWorkspace.OpenTable(layerName);

        IRowBuffer pRowBuffer = m_pTable.CreateRowBuffer();

        ICursor pCursor = m_pTable.Insert(true);

        //循環(huán)加載記錄行中的數(shù)據(jù)

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

        {

        IRow pRow = pSearchCursor.NextRow();

        IFeature tmpFea = pRow as IFeature;

        pRowBuffer.set_Value(colIndex,value);

        pCursor.InsertRow(pRowBuffer);

        ……

        }

        空間數(shù)據(jù)的匹配,負(fù)責(zé)將導(dǎo)入的空間數(shù)據(jù)與XML字典標(biāo)準(zhǔn)進(jìn)行匹配。數(shù)據(jù)匹配第一步是確定來(lái)源表與目標(biāo)表的對(duì)應(yīng)關(guān)系;第二步確定空間表中來(lái)源字段與目標(biāo)字段的對(duì)應(yīng)關(guān)系,來(lái)源字段與目標(biāo)字段的字段類(lèi)型必須為包容關(guān)系,來(lái)源字段長(zhǎng)度必須小于等于目標(biāo)字段長(zhǎng)度,來(lái)源字段中的數(shù)據(jù)必須可以正確地轉(zhuǎn)換為目標(biāo)字段類(lèi)型,例如數(shù)字類(lèi)型可以轉(zhuǎn)換為字符串類(lèi)型。匹配及轉(zhuǎn)換實(shí)現(xiàn)采用Visual Studio 2013常規(guī)類(lèi)庫(kù)實(shí)現(xiàn)如圖1所示。

        圖1 空間數(shù)據(jù)匹配實(shí)現(xiàn)界面

        2.4 數(shù)據(jù)檢查

        數(shù)據(jù)檢查在完成空間數(shù)據(jù)導(dǎo)入之后,對(duì)空間數(shù)據(jù)進(jìn)行一般性檢查與拓?fù)錂z查。

        一般性檢查目標(biāo)是空間圖層的屬性數(shù)據(jù),檢查內(nèi)容包括必選圖層在數(shù)據(jù)庫(kù)中是否存在、各個(gè)圖層屬性表結(jié)構(gòu)是否正確、必填字段是否有缺失、字段中的數(shù)據(jù)是否超出值域范圍[6],檢查完成給出檢查日志。

        拓?fù)錂z查模塊檢查空間圖層的邏輯關(guān)系,開(kāi)發(fā)時(shí)遵從模塊可配置擴(kuò)展的原則,用戶(hù)可根據(jù)業(yè)務(wù)需要配置一份拓?fù)錂z查內(nèi)容。為了不影響原數(shù)據(jù)的完整性,系統(tǒng)將重新創(chuàng)建備份空間數(shù)據(jù)庫(kù)與拓?fù)鋽?shù)據(jù)集,拓?fù)錂z查將在該數(shù)據(jù)集中進(jìn)行。檢查完成后可方便地查看錯(cuò)誤類(lèi)型與錯(cuò)誤來(lái)源等信息,如需查看更加詳盡的信息可以在ArcMap軟件中查看拓?fù)鋽?shù)據(jù)集。

        2.4.1 一般性檢查

        1)檢查必選圖層。使用SQL語(yǔ)句,循環(huán)查找必選圖層是否存在。

        2)檢查圖層屬性表結(jié)構(gòu)是否正確、必填字段是否缺失。獲取圖層結(jié)構(gòu)后,通過(guò)填充至DataTable,循環(huán)對(duì)比字段數(shù)據(jù)類(lèi)型是否正確、必填字段是否存在。dt.Columns[字段代碼].DataType可以獲取字段數(shù)據(jù)類(lèi)型。

        3)檢查字段值域。獲取XML值域要求或具體內(nèi)容,與屬性?xún)?nèi)容比較,用DataTable比較的方式。

        2.4.2 拓?fù)錂z查

        ArcEngine中封裝了一組拓?fù)浣涌冢糜谟脩?hù)定制拓?fù)潢P(guān)系規(guī)則,幫助用戶(hù)發(fā)現(xiàn)存在的拓?fù)潢P(guān)系錯(cuò)誤。

        2.5 數(shù)據(jù)瀏覽

        該模塊提供空間數(shù)據(jù)圖形與屬性的查看,并提供數(shù)據(jù)加載、放大、縮小、移動(dòng)等基本功能。

        2.5.1 圖層加載

        通過(guò)使用工廠(chǎng)接口模式加載數(shù)據(jù),并將數(shù)據(jù)加載到地圖容器。

        IWorkspaceFactory pmdbFC = new AccessWorkspace FactoryClass() ;

        IFeatureWorkspace featureWorkspace= pWorkspaceFactory.OpenFromFile(“數(shù)據(jù)路徑”, 0) as IFeatureWorkspace;

        IFeatureclass pFC= featureWorkspace.OpenFeatureClass (“圖層名稱(chēng)”);

        axMapControl1.AddLayer(pFC as ILayer); //將圖層加載到地圖容器

        2.5.2 地圖工具的實(shí)現(xiàn)

        在ArcEngine類(lèi)庫(kù)中有豐富的Command控件用來(lái)與地圖控件進(jìn)行操作和交互,全面采用COM技術(shù)、支持跨平臺(tái)、跨語(yǔ)言及多模式開(kāi)發(fā)[7]。比如有一系列的地圖瀏覽控件、地圖查詢(xún)控件、選取控件、編輯控件來(lái)與MapControl和PageLayoutControl進(jìn)行交互。

        3 結(jié) 語(yǔ)

        作為地理信息系統(tǒng)的重要組成階段,空間數(shù)據(jù)建設(shè)是至關(guān)重要的第一步,也是各種信息化建設(shè)的關(guān)鍵一步。本系統(tǒng)以可擴(kuò)展標(biāo)記語(yǔ)言XML,設(shè)計(jì)生成數(shù)據(jù)庫(kù)模型;采用ArcGIS Engine接口開(kāi)發(fā)技術(shù),建設(shè)通用的空間數(shù)據(jù)庫(kù)。能幫助業(yè)務(wù)人員快速建庫(kù)、矢量數(shù)據(jù)入庫(kù)、數(shù)據(jù)檢查、成果打包等,有效提高作業(yè)效率、提升作業(yè)品質(zhì)。

        [1] 左澤均,周順平.基于MapGIS數(shù)據(jù)中心構(gòu)建基礎(chǔ)地理信息地圖集模型[J].地球科學(xué):中國(guó)地址大學(xué)學(xué)報(bào),2010,35(3):391-396

        [2] 張龍,汪新慶.基于數(shù)據(jù)字典的空間數(shù)據(jù)庫(kù)通用建庫(kù)技術(shù)[J].國(guó)土資源遙感,2014,26(1) :173-178

        [3] 黃雯翠,任福. 基于ArcEngine開(kāi)發(fā)的應(yīng)用數(shù)據(jù)平臺(tái)更新與維護(hù)[J].測(cè)繪與空間地理信息,2010,33(3):158-163

        [4] 馮進(jìn),丁博,史殿習(xí),等.XML解析技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2009,31(2):120-124

        [5] 李連勝.Geodatabase在空間數(shù)據(jù)庫(kù)建庫(kù)中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2009(12) :131-134

        [6] 李江,周浩,羅吳亮.ArcGIS空間數(shù)據(jù)庫(kù)中拓?fù)溴e(cuò)誤的檢查與批量處理方法[J].北京測(cè)繪,2015(2) :5-8

        [7] 尹暉,王艷濤,張曉鳴,等. 基于ArcEngine的輸電走廊三維可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J] .測(cè)繪地理信息,2015,40(2) :14-16

        猜你喜歡
        建庫(kù)字段空間數(shù)據(jù)
        圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
        面向建庫(kù)與制圖一體化的規(guī)則研究
        中文期刊回溯建庫(kù)的實(shí)踐與思考——以貴州省圖書(shū)館為例
        元數(shù)據(jù)驅(qū)動(dòng)的多中心空間數(shù)據(jù)同步方法研究
        CNMARC304字段和314字段責(zé)任附注方式解析
        無(wú)正題名文獻(xiàn)著錄方法評(píng)述
        建設(shè)用地節(jié)約集約利用評(píng)價(jià)數(shù)據(jù)庫(kù)建庫(kù)流程:以西安市為例
        河南科技(2014年5期)2014-02-27 14:08:42
        基于數(shù)據(jù)字典的空間數(shù)據(jù)庫(kù)通用建庫(kù)技術(shù)
        基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
        關(guān)于CNMARC的3--字段改革的必要性與可行性研究
        91精品国产综合久久久密臀九色| 成 人 网 站 免 费 av| 亚洲区在线播放| 亚洲国产精品一区二区第一| 久久热免费最新精品视频网站| 亚洲色精品三区二区一区| 亚洲精品无码成人a片| 亚洲精品一二区| 自拍偷拍另类三级三色四色| 亚洲国产精品av在线| 国产高清av首播原创麻豆| 俺也去色官网| 手机在线免费看av网站| 变态另类人妖一区二区三区| 国产精品国产三级国av在线观看| 日本欧美小视频| 日本大胆人体亚裔一区二区| 亚洲一区二区在线观看网址| 麻豆成人精品国产免费| 中文字幕一区二区人妻出轨| 精品中文字幕久久久人妻| 国产国产精品人在线视| 亚洲一区精品无码色成人| 欧美在线成人免费国产| 天堂一区二区三区精品| 亚洲精品动漫免费二区| 精品久久无码中文字幕| 久久高潮少妇视频免费| 亚洲免费国产中文字幕久久久 | 女人喷潮完整视频| 欧美a视频在线观看| 97久久久一区二区少妇| 国产精品久久久久久久久久红粉| 亚洲欧美在线观看| 国产在线天堂av| 亚洲综合中文字幕日韩| 18禁真人抽搐一进一出在线| 国产成人国产在线观看| 91久久大香伊蕉在人线国产| 国产综合色在线视频区| 国产女人成人精品视频|