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

        ?

        Shp數(shù)據(jù)結(jié)構(gòu)解析及一種底層讀取方法

        2020-08-12 06:48:26陳明超劉朋飛
        科學(xué)技術(shù)創(chuàng)新 2020年21期
        關(guān)鍵詞:折線字段數(shù)據(jù)結(jié)構(gòu)

        陳明超 劉朋飛*

        (天津師范大學(xué) 地理與環(huán)境科學(xué)學(xué)院,天津300387)

        Shapefile 文件是ESRI 公司提出的用于描述空間數(shù)據(jù)的幾何和屬性特征的非拓?fù)鋵嶓w矢量數(shù)據(jù)結(jié)構(gòu)的一種格式[1],利用歐幾里得幾何學(xué)中的點、線、面、體來表示地理實體的一種數(shù)據(jù)組織方式。該文件格式已經(jīng)成為GIS 界的一個開放標(biāo)準(zhǔn),同時也是一種重要的矢量數(shù)據(jù)交換格式。能很好的表達(dá)地理實體分布特征、數(shù)據(jù)精度高、冗余度低,在桌面版GIS 應(yīng)用程序和WebGIS中有廣泛的應(yīng)用。

        1 Shapefile 數(shù)據(jù)文件結(jié)構(gòu)

        一個完整的Shapfile 文件包含如下(如表1 所示)幾個子文件,常用的子文件包括.shx 格式的幾何特征索引文件,.shp 格式的幾何文件,.dbf 格式的屬性文件[2]和.prj 格式的投影文件。.shp文件為其中的主文件,本文的研究基于此展開。

        表1 Shapefile 文件子文件

        Shp 數(shù)據(jù)結(jié)構(gòu):

        Shp 文件主要由文件頭和信息記錄兩部分組成,文件頭存儲與文件基本特征相對應(yīng)的數(shù)據(jù),信息記錄由多條子記錄組成,每條記錄表示相應(yīng)的幾何實體信息。文件頭總長度為100 字節(jié),分為基本識別信息和空間概況信息?;咀R別信息包含八個int類型字段,總長度32 字節(jié)??臻g概況信息包含一個int 類型字段和八個double 類型字段,總長度68 字節(jié)。具體字段信息如表2和表3 所示。

        表2 基本識別信息結(jié)構(gòu)

        表3 空間概況信息字段信息結(jié)構(gòu)

        其中最大最小X,Y 坐標(biāo)值構(gòu)成了最小外接矩形(MER),Z 坐標(biāo)為非必要字段。讀取時按照起始位置依次讀取,如讀取FileCode 字段從第零位開始,讀Unused 字段從第四位開始讀。

        信息記錄部分由多個子記錄組成,沒有固定的長度,最終長度取決于子記錄的個數(shù)和每個子記錄的長度。每個子記錄由記錄頭信息和空間信息記錄組成,記錄頭信息包含記錄號和記錄長度,均為int 型,總長度為八字節(jié)??臻g記錄信息包含數(shù)據(jù)類型和坐標(biāo)對信息,具體結(jié)構(gòu)如圖1 所示。

        表4 空間實體類型

        圖1 空間記錄信息結(jié)構(gòu)

        其中的Shapetype 字段表示該shp 數(shù)據(jù)表示的實體類型,常見的類型包括點(point)、線(polyline)和面(polygon)等。全部的實體類型如表4 所示。

        1.1 point 數(shù)據(jù)結(jié)構(gòu)

        Point 是shp 數(shù)據(jù)中最簡單的實體類型,由一個int 型的Shapetype 和一對double 型的坐標(biāo)對組成,單個Point 實體長度固定為20 字節(jié),存儲結(jié)構(gòu)如圖2 所示。

        圖2 Point 對象存儲結(jié)構(gòu)

        1.2 polyline 數(shù)據(jù)結(jié)構(gòu)

        Polyline 是我們常用的另一種實體類型,GIS 中的河流,路網(wǎng)等都屬于polyline 實體。一個polyline 實體可能包含一條折線,也可能包含多條折線,每條折線叫做一個分段,每次讀取依次從每條折線首個節(jié)點索引位置開始。在polyline 存儲結(jié)構(gòu)中,存儲最小外接多邊形、折線數(shù)、每條折線的起始點位置、節(jié)點數(shù)目以及所有的節(jié)點坐標(biāo)等。具體的存儲字段如表5 所示,存儲結(jié)構(gòu)如圖3 所示,示例如圖4 和圖5 所示。

        表5 polyline 數(shù)據(jù)存儲字段

        圖3 polyline 存儲結(jié)構(gòu)

        圖4 示例polyline

        圖5 多段線存儲結(jié)構(gòu)

        1.3 polygon 數(shù)據(jù)結(jié)構(gòu)

        polygon 是shapefile 數(shù)據(jù)中又一重要的實體類型,常用來表示公園、小區(qū)、省市等面狀實體。一個polygon 可由一個polyline實體首尾相連組成,也可由多個polyline 實體首尾相連組成,每個節(jié)點的坐標(biāo)可由polyline 存儲結(jié)構(gòu)中獲取,該方法保證了多邊形公共邊的唯一性[3]。同時每條邊具有方向性,最外層的polyline 由起點沿順時針到終點,其手邊為polygon 區(qū)域,存在島的polygon 為起點沿逆時針方向到終點的右手邊方向。組成polygon 的邊界polyline 不能存在交叉,即為一個“干凈的多邊形”[4]。由于polyline 為閉合環(huán),存在首尾重合,所以在存儲上會多一個point,比如存儲一個四邊形邊界要存儲五個點。polygon由polyline 組成,同時具有與polyline 相同的存儲結(jié)構(gòu)。

        2 Shp 數(shù)據(jù)讀取程序設(shè)計

        2.1 設(shè)計原則及方法

        本次程序設(shè)計使用Visual Studio 2019 平臺,使用的語言為C#語言,采用純底層面向?qū)ο蟮姆椒▽崿F(xiàn)。

        本次設(shè)計基于文件流的方式,使用BinaryReader 類讀取二進制文件。通過解析數(shù)據(jù)結(jié)構(gòu),可知.shp 數(shù)據(jù)結(jié)構(gòu)中存儲的字段為長度為四個字節(jié)的int 型和長度為為八個字節(jié)的double 型,使用BinaryReader 類提供的ReadInt32()方法和ReadDouble()方法進行讀取,ReadInt32()方法從當(dāng)前流中讀取四個字節(jié)的有符號整數(shù),并使流的當(dāng)前位置提升四個字節(jié),ReadDouble()從當(dāng)前流中讀取八個字節(jié)的浮點值,并使流的當(dāng)前位置提升八個字節(jié),這兩種方法保證了相鄰兩次讀取文件的連續(xù)性。

        2.2 核心代碼說明

        3 程序測試

        本次程序測試使用的數(shù)據(jù)為point、ployline 和polygon 三種類型,測試結(jié)果如圖6- 圖8 所示。

        圖6 點數(shù)據(jù)測試結(jié)果

        圖7 線數(shù)據(jù)測試結(jié)果

        圖8 面數(shù)據(jù)測試結(jié)果

        本文首先對Shapefile 文件結(jié)構(gòu)做了詳細(xì)的解析,使讀者對我們常用的Shapefile 文件的組成有了清晰的了解。同時本文將研究重點放在了shp 數(shù)據(jù)結(jié)構(gòu)解析上,使讀者對shp 數(shù)據(jù)的理解從簡單的的“點、線、面、坐標(biāo)對”層次上升到更加詳細(xì)的結(jié)構(gòu)化層次,包括完整的shp 數(shù)據(jù)結(jié)構(gòu)、點線面不同實體的數(shù)據(jù)結(jié)構(gòu)以及不同位置字段的類型和長度。在文章的最后采用winForm形式基于文件流的方法實現(xiàn)從底層進行讀取,并得到了很好的效果。由于能力有限,程序中還存在一些不足,比如無法實現(xiàn)點線面實體的疊加顯示,無法顯示屬性信息等。在我們今后的學(xué)習(xí)中還會做深入的研究和完善。近年來,隨著輕量化GIS 的 發(fā)展,.shp 數(shù)據(jù)在web 服務(wù)發(fā)布中更得到了進一步的應(yīng)用,比如在GeoServer 中發(fā)布為地圖服務(wù)[5],在QGIS 中轉(zhuǎn)換成輕量級的JSON 格式數(shù)據(jù)供前后端交互等。今后的研究將在此研究的基礎(chǔ)上,把一部分精力放在shp 數(shù)據(jù)格式研究和應(yīng)用研究上,在GIS應(yīng)用和發(fā)展中,發(fā)揮出shp 數(shù)據(jù)更大的作用和優(yōu)勢。

        猜你喜歡
        折線字段數(shù)據(jù)結(jié)構(gòu)
        折線統(tǒng)計圖
        圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
        折線的舞臺——談含絕對值的一次函數(shù)的圖象
        折線
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        中國市場(2016年45期)2016-05-17 05:15:48
        CNMARC304字段和314字段責(zé)任附注方式解析
        無正題名文獻(xiàn)著錄方法評述
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
        河南科技(2014年5期)2014-02-27 14:08:57
        亚洲AV无码成人品爱| 久久午夜精品人妻一区二区三区| 精品国产粉嫩内射白浆内射双马尾| 国产综合在线观看| 精品国产三级a∨在线观看| 亚洲欧美在线视频| 熟女人妻一区二区中文字幕| 亚洲视频在线观看一区二区三区 | 中出人妻中文字幕无码| 成人无码视频| 国产精品亚洲综合色区丝瓜| 在线观看免费a∨网站| 亚洲av永久青草无码精品| 日本一区二区在线播放| 人妻诱惑中文字幕在线视频| 亚洲热线99精品视频| vr成人片在线播放网站| 亚洲青青草视频在线播放| 亚洲一区二区三区成人网| av天堂午夜精品一区| 男女车车的车车网站w98免费| 国产成人精品三级在线影院| 国产人妖一区二区av| 精品粉嫩av一区二区三区| 一二三四日本中文在线| 国产av一区二区三区日韩| 蜜桃av噜噜一区二区三区香| 亚洲精品国产亚洲av| 国模冰莲极品自慰人体| 国产剧情麻豆女教师在线观看| 美女裸体无遮挡免费视频国产| 国产视频一区二区三区久久亚洲| 中文有码亚洲制服av片| 又长又大又粗又硬3p免费视频| 丁香婷婷色| 中文字幕丰满人妻被公强| 亚洲av中文无码乱人伦在线观看| 少妇久久久久久被弄到高潮| 久久久久久久一线毛片| 久久精品国产亚洲av沈先生 | 午夜视频网址|