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

EPS2020平臺輸出FileGDB格式的設計

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

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

關鍵詞:EPS2020;數據庫;FileGDB格式

一、前言

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

二、 開發技術

(一)FileGDB及開發包

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

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

· 要素類

· 要素數據集

· 鑲嵌數據集

· 柵格數據集

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

· 表(非空間)

· 工具箱

要素類和表可包含子類型、附件并使用關系類關聯到另一個要素類和表。要素數據集可包含要素類以及以下類型的數據集:

· 幾何網絡

· 網絡數據集(需要 ArcGIS Network Analyst extension)

· 宗地結構

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

· 拓撲

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

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

(二)GDAL FileGDB API庫

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

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

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

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

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

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

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

FID :要創建的OID列的名稱。默認為“OBJECTID”。

XYTOLERANCE, ZTOLERANCE:這些參數控制用于高級ArcGIS功能(如網絡和拓撲規則)的捕捉公差。

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

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

XML_DEFINITION :設置此選項時,其值將用作創建新表的XML定義。

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

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

(三) EPS2020二次開發

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

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

三、對象映射關系

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

(一)編碼對圖層映射

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

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

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

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

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

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

四、代碼與測試

(一) GDAL代碼中植入FileGDB

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

nmake -f makefile.vc

nmake -f makefile.vc install

nmake -f makefile.vc devinstall

nmake -f makefile.vc clean

最后編譯出GDAL.DLL文件。

(二) EPS對象輸出

EPS2020N二次開發是在VC6.0的環境中完成。打開EPS數據集后,獲取EPS對象CGeoBase,然后按上一節描述的映射關系,創建FileGDB圖層,即列舉全部EPS對象的編碼,創建相應的同名FileGDB圖層。

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

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;

}

五、結語

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

參考文獻

[1] 北京山維科技有限公司.EPS SDL開發入門與實戰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 坐標轉換功能改寫[J]. 測繪與空間地理信息,2020,43(06):185-187.

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

作者單位:重慶市勘測院

責任編輯:張津平

主站蜘蛛池模板: 欧美午夜在线观看| 一级毛片免费的| 又黄又湿又爽的视频| 欧美日在线观看| 一级福利视频| 久久精品免费国产大片| 88av在线| 99免费在线观看视频| 日韩精品中文字幕一区三区| 无遮挡国产高潮视频免费观看| 五月综合色婷婷| 青青草国产在线视频| 国产91精品最新在线播放| 久久国产精品嫖妓| 国产一二三区在线| 中文字幕日韩丝袜一区| 日韩激情成人| 日韩精品成人网页视频在线| 国产在线专区| 好久久免费视频高清| 亚洲精品无码久久毛片波多野吉| 国产精品免费露脸视频| 亚洲av片在线免费观看| 国产一区二区人大臿蕉香蕉| 免费一级成人毛片| 黄色a一级视频| 久久美女精品| 精品国产自在现线看久久| 精品国产三级在线观看| 日韩福利在线观看| 国产亚卅精品无码| 九九热视频精品在线| 亚洲精品福利网站| 国产三级视频网站| h网址在线观看| 91精品国产综合久久香蕉922 | 国产福利在线免费观看| 伊人狠狠丁香婷婷综合色| 三级视频中文字幕| 国产免费观看av大片的网站| 中文无码精品A∨在线观看不卡| 欧美一道本| www.亚洲天堂| 日韩小视频网站hq| 乱人伦中文视频在线观看免费| 久久国产精品嫖妓| 欧美第九页| 三区在线视频| 亚洲男人的天堂在线观看| 日韩人妻精品一区| 青草视频久久| 天堂网亚洲系列亚洲系列| 亚洲综合第一页| 18禁黄无遮挡网站| 成人看片欧美一区二区| 欧美激情第一区| 亚洲欧美成人在线视频 | 国产精品久久久久久搜索 | 久久福利片| 午夜日b视频| 喷潮白浆直流在线播放| 露脸真实国语乱在线观看| 午夜不卡视频| 亚洲精品第一页不卡| 免费a在线观看播放| 丁香婷婷久久| 国产av一码二码三码无码| 国产福利在线免费观看| 精品国产一区二区三区在线观看| 中文字幕一区二区视频| 国产乱子伦视频在线播放| 999精品色在线观看| YW尤物AV无码国产在线观看| 亚洲欧美色中文字幕| 亚洲日本中文综合在线| 97亚洲色综久久精品| 91精品国产自产91精品资源| 国产免费a级片| 欧美、日韩、国产综合一区| 国产成人精品在线1区| 久久超级碰| 亚洲国模精品一区|