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

EPS2020平臺輸出FileGDB格式的設(shè)計

2023-04-29 00:00:00葉水全?李凱
信息系統(tǒng)工程 2023年10期

摘要:EPS2020平臺是北京山維公司面向前端采集和后期數(shù)據(jù)建庫一體化的測繪平臺,目前可以支撐3000平方公里左右的中型城市的大比例尺數(shù)據(jù)建庫需求,管理的對象條目接近1億。隨著大比例尺前端采集與后端建庫一體化的加深,對城市級的數(shù)據(jù)要素加工、跨平臺數(shù)據(jù)遷移提出更高的要求。在EPS2020升級開發(fā)過程中,基于ERSI FileGDB通用數(shù)據(jù)格式,為后臺數(shù)據(jù)庫的GIS輸出,設(shè)計了一種較為高效的整體方案,簡化了底出輸出結(jié)構(gòu),適合數(shù)據(jù)庫級的海量輸出。

關(guān)鍵詞:EPS2020;數(shù)據(jù)庫;FileGDB格式

一、前言

EPS2020目前還處于初步完善階段,目標是依據(jù)國標完善編碼體系,以及提升數(shù)據(jù)量的支撐能力[1]。其上一個較為成熟的版本是EPS2008。在EPS2008平臺中,大比例尺測圖一般以基本比例尺編號為文件名(后綴*.edb),逐文件保存。一般的GIS數(shù)據(jù)輸出作業(yè)中,效率要求不高,數(shù)據(jù)體量偏小,往往通過VBS腳本,使用平臺的通用輸出函數(shù)ExportData,循環(huán)模式單個文件輸出為SHP文件(ESRI Shapefile) 即可滿足需求。升級為EPS2020平臺后,原有SHP輸出方案的輸出效率、數(shù)據(jù)承載力都無法滿足需求。本文在EPS2020平臺進行二次開發(fā),省去原有通用的ExportData函數(shù)輸出對象,而采用直接輸出GIS格式,提升了平臺GIS輸出效率,且支撐了更大輸出體量。其中,輸出格式采用ESRI公司的FileGDB格式。FileGDB不僅支持1TB級的數(shù)據(jù)量,ESRI公司還為其提供了開發(fā)接口。同時,本文使用了開源軟件GDAL中間件,其對矢量格式和柵格格式進行了廣泛支持,對FileGDB進行了更為抽象GIS風(fēng)格封裝,更有利于移植使用。

二、 開發(fā)技術(shù)

(一)FileGDB及開發(fā)包

FileGDB是ESRI公司開發(fā)的一種非公開文件地理數(shù)據(jù)庫承載格式,是磁盤上某個文件夾中文件的集合,可以存儲、查詢和管理空間數(shù)據(jù)和非空間數(shù)據(jù)。從Windows 資源管理器查看,是以.gdb為后綴的文件夾(見圖1),和任何其他文件夾一樣可以查看它里面的內(nèi)容。文件夾內(nèi)使用隱含命名文件存儲地理數(shù)據(jù)、屬性數(shù)據(jù)、索引文件、lock 文件、特征文件以及其他文件。地理數(shù)據(jù)庫中的每個要素類或表存儲在兩個或多個文件中,并不能明確地說出任何給定的數(shù)據(jù)集是由哪些文件所組成[2]。

在ArcMap軟件中,可從目錄樹或者使用創(chuàng)建文件地理數(shù)據(jù)庫地理處理工具創(chuàng)建文件地理數(shù)據(jù)庫。文件數(shù)據(jù)庫由系統(tǒng)表及用戶數(shù)據(jù)組成,可以存儲在以下類型的數(shù)據(jù)集中:

· 要素類

· 要素數(shù)據(jù)集

· 鑲嵌數(shù)據(jù)集

· 柵格數(shù)據(jù)集

· 邏輯示意圖數(shù)據(jù)集(需要 ArcGIS Schematics extension)

· 表(非空間)

· 工具箱

要素類和表可包含子類型、附件并使用關(guān)系類關(guān)聯(lián)到另一個要素類和表。要素數(shù)據(jù)集可包含要素類以及以下類型的數(shù)據(jù)集:

· 幾何網(wǎng)絡(luò)

· 網(wǎng)絡(luò)數(shù)據(jù)集(需要 ArcGIS Network Analyst extension)

· 宗地結(jié)構(gòu)

· 地形(需要 ArcGIS 3D Analyst extension)

· 拓撲

默認情況下,GDB數(shù)據(jù)庫中數(shù)據(jù)集(表或要素)的最大大小為1 TB,大型數(shù)據(jù)集的最大大小可增加到 256 TB,它們由配置關(guān)鍵字即可控制。要素類和表的數(shù)量、要素類或表中的行數(shù)、文本字段的長度可以達2,147,483,647。要素類或表中的字段數(shù)為65,534。

可以說,F(xiàn)ileGDB存儲能力非常強大,符合EPS2020平臺建庫數(shù)據(jù)輸出GIS數(shù)據(jù)的數(shù)據(jù)承載力。雖然ESRI公司并沒有完全公開GDB格式底層,但其提供了File Geodatabase API接口,可以在包括windows、mac、linux等多個操作系統(tǒng)上獨立地訪問GDB數(shù)據(jù)。目前官方網(wǎng)址公布的版本是1.4,GITHUB上已經(jīng)更新到1.5.2。

(二)GDAL FileGDB API庫

GDAL(Geospatial Data Abstraction Library)是一個基于C++代碼的開源GIS 庫,支持X/MIT許可協(xié)議,它利用抽象數(shù)據(jù)模型來表達所支持的各種文件格式。GDAL支持各種柵格地理數(shù)據(jù)格式,同時包括了操作矢量數(shù)據(jù)的OGR(OpenGIS Simple Feature Reference)庫。一般將這兩個庫合稱為GDAL/OGR,或者簡稱GDAL。GDAL是由Frank Warmerdam于1998年開始開發(fā)的,在GDAL 1.3.2版本之后,正式由開源空間信息基金會下的GDAL/OGR項目管理委員會對其進行維護。由于MIT協(xié)議的開放性,任何人都可以基于GDAL庫來編譯自己的軟件而不需要原作者的授權(quán),許多著名的GIS軟件可以接入GDAL庫,如ESRI的ArcGIS,Google的Google Earth等系統(tǒng)。特別是一些開源項目(如GRASS GIS、QGIS等)更是將GDAL作為基礎(chǔ)支撐。

GDAL支持包括GeoTiff,Eradas Imagine,ECW,MrSID,JPEG2000,DTED,NITF,GeoPackage等155類柵格數(shù)據(jù)的支持;支持包括ESRI Shape,ESRI ArcSDE,ESRI FileGDB,MapInfo(tab and mid/mif),GML,MKL,PostGIS,Oracle Spatial等95類矢量數(shù)據(jù)的支持。默認情況下,GDAL使用OpenFileGDB驅(qū)動只讀性地打開GDB數(shù)據(jù)庫,讀寫操作則需要將ESRI公司的File Geodatabase API接口接入進來,其接入驅(qū)動名為ESRI File Geodatabase (FileGDB) Driver[3]。

GDAL FileGDB驅(qū)動程序提供對ArcGIS 10及以上版本創(chuàng)建的文件geodatabase(.gdb目錄)的矢量層的讀寫訪問[4]。數(shù)據(jù)集名稱必須是目錄/文件夾名稱,并且必須以.gdb擴展名結(jié)尾。GDAL FileGDB驅(qū)動程序支持批量功能加載,以加快數(shù)據(jù)的插入,即FGDB_BULK_LOAD 選項設(shè)置為YES。此配置選項的作用是執(zhí)行寫鎖定并臨時禁用索引。在關(guān)閉數(shù)據(jù)源或完成讀取操作時還原這些數(shù)據(jù)。對于新創(chuàng)建的圖層,默認情況下啟用批量加載。另外,GDAL FileGDB驅(qū)動支持在數(shù)據(jù)集上執(zhí)行SQL語句,以及如下創(chuàng)建參數(shù):

FEATURE_DATASET :在命名的FeatureDataset文件夾中創(chuàng)建新層;如果文件夾不存在,將創(chuàng)建它。

LAYER_ALIAS =string:(GDALgt;=2.3)設(shè)置層名稱別名。

GEOMETRY_NAME :在新層中設(shè)置幾何列的名稱。默認為“SHAPE”。

GEOMETRY_NULLABLE :(GDALgt;=2.0)幾何列的值是否可以為空。

FID :要創(chuàng)建的OID列的名稱。默認為“OBJECTID”。

XYTOLERANCE, ZTOLERANCE:這些參數(shù)控制用于高級ArcGIS功能(如網(wǎng)絡(luò)和拓撲規(guī)則)的捕捉公差。

XORIGIN、YORIGIN、ZORIGIN、XYSCALE、ZSCALE :坐標參數(shù)精度。網(wǎng)格的尺寸由原點和比例決定。原點定義參考柵格點在空間中的位置。比例是分辨率的倒數(shù)。

XORIGIN, YORIGIN, ZORIGIN, XYSCALE, ZSCALE:指定的域 (xmin=XORIGIN, ymin=YORIGIN, xmax=(XORIGIN + 9E+15 / XYSCALE), ymax=(YORIGIN + 9E+15 / XYSCALE)) 需要包含要素類的所有可能的坐標值。

XML_DEFINITION :設(shè)置此選項時,其值將用作創(chuàng)建新表的XML定義。

CREATE_MULTIPATCH = YES:設(shè)置此選項時,MultiPolygon類型圖層的幾何圖形將寫入MultiPatch。

CONFIGURATION_KEYWORD = DEFAULTS/TEXT_UTF16/MAX_FILE_SIZE_4GB/MAX_FILE_SIZE_256TB/GEOMETRY_OUTOFLINE/BLOB_OUTOFLINE/GEOMETRY_AND_BLOB_OUTOFLINE : 自定義數(shù)據(jù)存儲方式。默認情況下,文本采用UTF-8格式,數(shù)據(jù)最大為1TB。

(三) EPS2020二次開發(fā)

北京山維公司EPS地理信息工作站是測繪及GIS數(shù)據(jù)采集建庫更新平臺。平臺數(shù)據(jù)接口SunwaySDE除支持原生的EDB格式存儲外,還支持基于常規(guī)Oracle、SqlServer等數(shù)據(jù)庫級的存儲,同時也可以支持柵格影像等數(shù)據(jù)的顯示。另外,對ArcSDE接口再封裝,形成了SunwaySDE for ArcSDE。目前,原生的SunwaySDE是主要的發(fā)展方向,本次的二次開發(fā)即是在其環(huán)境下對CGeoBase的再輸出。

EPS平臺支持C++嵌入式開發(fā),SDL(Sunway Dynamic linked Library)是其提供的基于VC++6.0(SP2)環(huán)境下的二次開發(fā)包。通過SDL開發(fā)包,可以在EPS平臺上定制功能強大和專業(yè)的應(yīng)用。EPS平臺下的部分應(yīng)用模塊均是采用SDL的方式開發(fā)而成的。

三、對象映射關(guān)系

本文拋棄原有EPS圖層對GIS圖層的轉(zhuǎn)換關(guān)系,提出按EPS編碼對應(yīng)GIS圖層的映射關(guān)系。對于從EPS平臺向GIS平臺的數(shù)據(jù)輸出后,由于符號化方法和曲線平滑算法上的差異,在其他GIS 平臺上的可視化效果肯定無法精確還原,但可以完整地保留對象一一對應(yīng)的關(guān)系,以及單個對象的全部信息。因此,對象是可以在兩種數(shù)據(jù)之間無損轉(zhuǎn)換的,僅在對象的組織形式有所不同,有如下映射關(guān)系。

(一)編碼對圖層映射

EPS平臺是一個基于地物編碼的對象化平臺。相同地物編碼的對象在EPS平臺擁有相同的幾何類型、屬性[5]。

FileGDB是通用的OGC標準點、線和面對象,每一層代表一類對象集(FeatureClass)。因此,EPS平臺中的一個圖層并不能直接對應(yīng)FileGDB中的數(shù)據(jù)集。考慮到在EPS平臺中不同對象可能掛接一個或多種屬性表,這里使用EPS平臺中相同的編碼對象集對應(yīng)FileGDB中一個圖層(對象集)。

(二)基本元數(shù)據(jù)屬性映射

對于對象化的EPS平臺管理元數(shù)據(jù),按元數(shù)據(jù)的默認名稱存放到FileGDB對象集的屬性表中,如FeatureGUID、CreateTime、Code等。

對于EPS平臺對象的基本屬性,按顯示名稱存放到FileGDB對象集屬性字段,例如圖層名、工程信息、采集時間等。

對于EPS平臺單一對象空間位置點列上的每個特征點,因為還存在特征點類型Integer屬性,將其放置到FileGDB對象的M值中。

四、代碼與測試

(一) GDAL代碼中植入FileGDB

在VisualStudio2017編譯GDAL源代碼時添加對FileGDB的支持。首先修改編譯參數(shù),在GDAL自定義編譯參數(shù)文件nmake.local中補充*.h頭文件位置和*.lib資源文件位置,并設(shè)置FGDB_ENABLED=YES。其次使用cmd命令行編譯,在“開始菜單\所有程序\Microsoft Visual Studio 2017\Visual Studio Tools\ Visual Studio 2017命令提示”,點擊“Visual Studio 2017 命令提示”彈出經(jīng)過常量初始化后的CMD窗口。接著使用cd命令,切換到GDAL的源代碼目錄,并依次使用如下命令等待編譯結(jié)束即可:

nmake -f makefile.vc

nmake -f makefile.vc install

nmake -f makefile.vc devinstall

nmake -f makefile.vc clean

最后編譯出GDAL.DLL文件。

(二) EPS對象輸出

EPS2020N二次開發(fā)是在VC6.0的環(huán)境中完成。打開EPS數(shù)據(jù)集后,獲取EPS對象CGeoBase,然后按上一節(jié)描述的映射關(guān)系,創(chuàng)建FileGDB圖層,即列舉全部EPS對象的編碼,創(chuàng)建相應(yīng)的同名FileGDB圖層。

由于FileGDB已由GDAL封裝,在GDAL的數(shù)據(jù)庫集對象GDALDataset上,使用函數(shù)CreateLayer完成FileGDB圖層的創(chuàng)建,然后逐一對EPS對象CGeoBase轉(zhuǎn)化GDAL對象OGRFeature。核心函數(shù)如下(以線對象為例):

bool gdalAddLine(OGRLayer * gdal_layer," CGeoBase * pObj) {

OGRErr err;

OGRFeature * gdal_line_feature = OGRFeature::CreateFeature(gdal_layer-gt;GetLayerDefn());

// add filed

gdal_line_feature-gt;SetField(\"CODE\", pObj-gt;GetCode());

...

// geometry

OGRLineString gdal_line_geometry;

POINT3DLIST objPl;

pObj-gt;GetPointList(objPl);

for (int j = 0, jSize = objPl.GetSize(); j lt; jSize; ++j) {

OGRPoint gdal_point(objPl[j].x, objPl[j].y, objPl[j].z, objPl[j].nType);

gdal_line_geometry.addPoint(amp;gdal_point);

}

err = gdal_line_feature-gt;SetGeometry(amp;gdal_line_geometry);

err = gdal_layer-gt;CreateFeature(gdal_line_feature);

OGRFeature::DestroyFeature(gdal_line_feature);

return err == OGRERR_NONE;

}

五、結(jié)語

隨著數(shù)據(jù)體量的增長,測繪編輯對EPS2020平臺提出更高的要求。本文在EPS平臺直接輸出對象化GIS數(shù)據(jù),通過將GDAL開源組件的接入,彌補了EPS2020平臺與其他平臺數(shù)據(jù)交換中表現(xiàn)出的數(shù)據(jù)量小、效率相對較低和無損互轉(zhuǎn)的問題。從初步的實踐結(jié)果來看,3000平方公里左右的1:500地形圖直接輸出為*.gdb文件,然后編碼分層地在ArcMap軟件中查看,數(shù)據(jù)信息通暢、結(jié)構(gòu)完整。下一步,需進一步實現(xiàn)基于“EPS2020模板結(jié)構(gòu)”的GIS數(shù)據(jù)向EPS數(shù)據(jù)的轉(zhuǎn)換,從而完成EPS平臺與GIS平臺之間的無損互轉(zhuǎn)。

參考文獻

[1] 北京山維科技有限公司.EPS SDL開發(fā)入門與實戰(zhàn)2019版[EB/OL].[2023-01-01]. http://www.sunwaysurvey.com.cn/

[2] ESRI.File GeoDatabase API[EB/OL].[2023-01-01].https://github.com/Esri/file-geodatabase-api/.

[3] GDAL.ORG,GDALFileGDB Driver[EB/OL].[2023-01-01].https://gdal.org/drivers/vector/filegdb.html.

[4] 李凱,葉水全.GDAL 坐標轉(zhuǎn)換功能改寫[J]. 測繪與空間地理信息,2020,43(06):185-187.

[5] 重慶市勘測院.《1:500地形數(shù)據(jù)編繪技術(shù)要求》Q/CKC CH06-2021[Z].重慶:重慶市勘測院,2021.

作者單位:重慶市勘測院

責(zé)任編輯:張津平

主站蜘蛛池模板: 亚洲手机在线| 日韩国产高清无码| 中文纯内无码H| 日韩av电影一区二区三区四区| 国产美女无遮挡免费视频| 国产成人亚洲精品无码电影| 无码'专区第一页| 欧美一区二区啪啪| 国产精品福利导航| 国产午夜无码片在线观看网站| 亚洲床戏一区| 中文字幕第1页在线播| 国产传媒一区二区三区四区五区| 国产日本一线在线观看免费| 久久a级片| 亚洲中文字幕手机在线第一页| 亚洲码一区二区三区| 亚洲天堂视频网站| 日韩欧美中文字幕在线精品| 亚洲69视频| 国产美女精品一区二区| 亚洲第一香蕉视频| 中文字幕佐山爱一区二区免费| 思思热在线视频精品| 99热这里只有精品免费国产| 久久黄色一级片| 91在线丝袜| AV色爱天堂网| 91视频首页| 久久久久久久久久国产精品| 久久久久国产精品熟女影院| 国产福利在线观看精品| 免费在线a视频| 大学生久久香蕉国产线观看| 91精品国产91久久久久久三级| 免费在线不卡视频| 精品少妇人妻无码久久| 四虎免费视频网站| 国产乱论视频| 无码精品国产VA在线观看DVD | 91成人免费观看| 毛片免费视频| 国产成年女人特黄特色毛片免| 欧美精品三级在线| 伊人91在线| 国产无码精品在线| 在线免费无码视频| 成人a免费α片在线视频网站| 婷婷综合在线观看丁香| 国产微拍精品| 欧美翘臀一区二区三区| 一级片免费网站| 成人午夜精品一级毛片| 欧美成人第一页| 久久窝窝国产精品午夜看片| 久久中文字幕2021精品| 欧美综合成人| 午夜日b视频| 色综合五月婷婷| 久久毛片网| 国产午夜一级淫片| 亚洲AⅤ永久无码精品毛片| 精品综合久久久久久97| 又爽又黄又无遮挡网站| 1769国产精品视频免费观看| 国产精品尤物在线| 成人午夜免费观看| 中文字幕啪啪| 欧美另类第一页| 国产精品播放| 色婷婷色丁香| 国产精品人成在线播放| 色欲色欲久久综合网| 无码丝袜人妻| 欧美三级日韩三级| 免费激情网站| 91丨九色丨首页在线播放| 不卡视频国产| 国产91成人| 国产成人高清在线精品| 亚洲欧美不卡视频| 国内毛片视频|