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

        ?

        淺談SHAPE文件轉(zhuǎn)換到CAD文件的方法

        2018-03-20 07:25:57李云尚余向東
        資源環(huán)境與工程 2018年1期
        關(guān)鍵詞:字節(jié)長(zhǎng)度對(duì)象

        李云尚, 余向東

        (湖北省地質(zhì)局 地球物理勘探大隊(duì),湖北 武漢 430056)

        ArcGIS 是目前廣泛使用的一種地理信息系統(tǒng)軟件,主要用來(lái)制圖、數(shù)據(jù)分析、各種專業(yè)地理信息系統(tǒng)的二次開(kāi)發(fā)等。Shapefile文件是ArcGIS的基礎(chǔ)文件類型,它主要用來(lái)存儲(chǔ)點(diǎn)、線、多邊形等幾何對(duì)象的坐標(biāo)信息和屬性信息。目前很多城市的規(guī)劃管理部門的地理地圖都是采用Shapefile文件格式儲(chǔ)存,而勘察部門基本都是使用CAD的dwg文件格式,因此,需要將Shapefile格式文件轉(zhuǎn)換成為dwg格式文件。

        1 Shape文件的組成與結(jié)構(gòu)

        ArcGIS的一個(gè)Shapefile文件實(shí)際上是一個(gè)文件夾,它里面主要包含一個(gè)主文件(xxx.shp),一個(gè)索引文件(xxx.shx),一個(gè)dbase格式的屬性文件(xxx.dbf)。這三個(gè)文件中的數(shù)據(jù)既相互聯(lián)系有各有區(qū)別,主文件(xxx.shp)是儲(chǔ)存坐標(biāo)信息(空間位置),由固定長(zhǎng)度的文件頭和變長(zhǎng)度空間數(shù)據(jù)記錄組成;索引文件(xxx.shx)是對(duì)主文件的索引,主要包含坐標(biāo)文件的索引信息;屬性文件(xxx.dbf)記錄屬性信息(地名,單位名,長(zhǎng)度,高程,子圖名,編碼等),它是一個(gè)標(biāo)準(zhǔn)的DBF文件,是由頭文件和實(shí)體信息兩部分構(gòu)成。

        1.1 主文件(xxx.shp)的組織結(jié)構(gòu)

        xxx.shp文件由文件頭和文件記錄構(gòu)成,而每個(gè)記錄是由固定長(zhǎng)度的記錄頭和變長(zhǎng)度的記錄內(nèi)容組成。

        1.1.1 主文件頭的組織結(jié)構(gòu)

        主文件頭是100個(gè)字節(jié)的固定長(zhǎng)度,以下是它的部分結(jié)構(gòu)(表1)。

        表1 主文件頭結(jié)構(gòu)表Table 1 Structure table of main file header

        注:位置是指開(kāi)始字節(jié)到文件頭第一字節(jié)的偏移量,長(zhǎng)度從0~99,剛好100個(gè)字節(jié)。

        1.1.2 主文件記錄的組織結(jié)構(gòu)

        每條記錄由記錄頭和記錄內(nèi)容兩部分組成,記錄頭結(jié)構(gòu)見(jiàn)表2。

        表2 記錄頭結(jié)構(gòu)表Table 2 Structure table of record header

        記錄內(nèi)容對(duì)于不同的Shapefile文件類型而不一樣,長(zhǎng)度也不一樣,以二維點(diǎn)(point)類型的文件記錄內(nèi)容來(lái)說(shuō)明(表3)。

        所以二維點(diǎn)文件的記錄內(nèi)容長(zhǎng)度是4+8+8=20

        表3 二維點(diǎn)文件記錄內(nèi)容說(shuō)明表Table 3 Explanatory table of 2d document content

        個(gè)字節(jié),每條記錄的長(zhǎng)度是4+4+20=28個(gè)字節(jié),也就是14個(gè)字,是個(gè)固定長(zhǎng)度(0是指到記錄內(nèi)容的開(kāi)始字節(jié)的偏移量)。

        1.2 xxx.dbf文件的結(jié)構(gòu)

        DBF文件是dbase格式的數(shù)據(jù)文件,它記錄.shp文件的屬性數(shù)據(jù),它在.shp文件中有特殊規(guī)定:

        (1) 文件名前綴必須與xxx.shp和xxx.shx一樣。

        (2) 每一個(gè)圖形特征必須在一個(gè)記錄內(nèi)。

        (3) 記錄順序必須與xxx.shp文件的記錄順序一樣。

        2 利用VB將二維點(diǎn)文件轉(zhuǎn)換為CAD文件

        2.1 利用VB將二維點(diǎn)文件轉(zhuǎn)換為CAD文件的程序流程圖1

        圖1 二維點(diǎn)文件轉(zhuǎn)換為CAD文件流程圖Fig.1 Flow chart of conversion of two dimensional point files into CAD file

        2.2 xxx.shp文件和xxx.dbf文件的打開(kāi)和讀取

        利用二進(jìn)制方式打開(kāi).shp文件,利用數(shù)據(jù)對(duì)象連接和打開(kāi).dbf文件,以下是程序片段:

        Open FileName For Binary As #2 //打開(kāi).shp文件

        ReDim myx(3)As Byte

        Get #2,25,myx //從第25字節(jié)處開(kāi)始讀入4個(gè)字節(jié)

        P=Val(b_l_h(myx))* 2 //計(jì)算文件總字節(jié)長(zhǎng)度

        Close #2 //關(guān)閉.shp文件

        Set mywks=DBEngine.Workspaces(0) //創(chuàng)建工作空間

        Set mydb=mywks.OpenDatabase(pathstr,True,True,“dbase 5.0”) //打開(kāi)指定的數(shù)據(jù)庫(kù)

        Set myrs=mydb.OpenRecordset(filedbf,dbOpenSnapshot) //打開(kāi)指定的表,創(chuàng)建記錄集對(duì)象

        Set mytab=mydb.TableDefs(filedbf) //創(chuàng)建表定義對(duì)象

        ........

        k=(p-100)/28 //計(jì)算.shp文件的記錄個(gè)數(shù)

        ........

        Open FileName For Binary As #4 //二進(jìn)制打開(kāi).shp文件

        For i=1 To k

        mystr=myrs.Fields(findval).Value //讀取.dbf 文件第i行記錄的指定字段的值

        Set cad3dpoint=New clsmypoint //創(chuàng)建自定義對(duì)象實(shí)例

        cad3dpoints.Add cad3dpoint //自定義對(duì)象添加到集合中

        Set cad3dpoint=Nothing //對(duì)象清空

        myrs.MoveNext //將記錄對(duì)象的記錄指針移到下一個(gè)記錄

        Next i

        Close #4 //關(guān)閉.shp文件

        myrs.Close //關(guān)閉記錄對(duì)象

        mydb.Close //關(guān)閉數(shù)據(jù)庫(kù)對(duì)象

        2.3 在AutoCad程序中展示二維點(diǎn)和屬性值

        程序片段如下:

        Set myx1.acadapp=GetObject(,“autocad.Application”) //引用cad應(yīng)用程序?qū)ο?/p>

        Set myx2.acaddoc=myx1.acadapp.ActiveDocument //引用一個(gè)cad活動(dòng)文檔對(duì)象

        .........

        geshu=cad3dpoints.Count //返回集合中對(duì)象的個(gè)數(shù)

        For i=1 To geshu

        Set cad3dpoint=New clsmypoint //創(chuàng)建自定義對(duì)象的實(shí)例

        Set cad3dpoint=cad3dpoints.Item(i) //集合中的對(duì)象賦值給自定義對(duì)象

        cad3dpoint.mylayer=layerming //給自定義對(duì)象的圖層屬性賦值

        cad3dpoint.zhandian //調(diào)用自定義對(duì)象方法創(chuàng)建cad點(diǎn)對(duì)象

        cad3dpoint.zhantext //調(diào)用自定義對(duì)象方法創(chuàng)建cad文本對(duì)象

        Set cad3dpoint=Nothing //對(duì)象清空

        Next i

        3 結(jié)論

        通過(guò)上述文件的分析和代碼演示,向大家展示了怎樣用VB程序?qū)hapefile文件轉(zhuǎn)換成cad文件的一般過(guò)程。通過(guò)工程實(shí)際運(yùn)用,證實(shí)此方法確實(shí)可行,既方便又靈活,可以滿足很多個(gè)性化的需求。

        [1] 張國(guó)寶.AutoCAD 2000 VBA開(kāi)發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2000.

        [2] 楊冬.Shapefile圖形文件的數(shù)據(jù)存儲(chǔ)格式及讀寫[J].首都師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,31(2):4-8.

        猜你喜歡
        字節(jié)長(zhǎng)度對(duì)象
        神秘來(lái)電
        睿士(2023年2期)2023-03-02 02:01:09
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        1米的長(zhǎng)度
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
        攻略對(duì)象的心思好難猜
        意林(2018年3期)2018-03-02 15:17:24
        愛(ài)的長(zhǎng)度
        怎樣比較簡(jiǎn)單的長(zhǎng)度
        簡(jiǎn)談MC7字節(jié)碼
        基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
        區(qū)間對(duì)象族的可鎮(zhèn)定性分析
        女人做爰高潮呻吟17分钟| 亚洲区偷拍自拍29p| 亚洲国产不卡av一区二区三区| 九一精品少妇一区二区三区| 69国产成人精品午夜福中文| 国产成人无码a区在线观看视频| 欧美黄色免费看| 丰满人妻一区二区三区免费| 国产一区二区三区激情视频| 日产亚洲一区二区三区| 国产草草视频| 亚洲嫩模高清在线视频| 美女被躁到高潮嗷嗷免费观看| 日本三级吃奶头添泬| 亚洲av永久无码国产精品久久| 国产内射合集颜射| 亚欧免费无码AⅤ在线观看 | 亚洲精品一品区二品区三品区| 香港日本三级亚洲三级| 国产真人无遮挡免费视频| 日韩av一区二区三区在线观看| 亚洲一区二区三区日韩在线观看| 国产无套粉嫩白浆在线观看| 无码夜色一区二区三区| 国产成人综合久久三区北岛玲| 亚洲国产精品中文字幕久久| 久久99国产精品久久| 精品香蕉久久久爽爽| 级毛片无码av| 丰满的少妇av一区二区三区| 日韩国产成人无码av毛片蜜柚| 免费一本色道久久一区| 伊人狼人激情综合影院| 国产私人尤物无码不卡| 亚洲乱妇老熟女爽到高潮的片| 一区二区三区午夜视频在线观看| 国产毛女同一区二区三区| 亚洲国产精品va在线播放| 91日韩高清在线观看播放| 在线看不卡的国产视频| 日韩麻豆视频在线观看|