• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

    李云尚, 余向東

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

    ArcGIS 是目前廣泛使用的一種地理信息系統(tǒng)軟件,主要用來制圖、數(shù)據(jù)分析、各種專業(yè)地理信息系統(tǒng)的二次開發(fā)等。Shapefile文件是ArcGIS的基礎(chǔ)文件類型,它主要用來存儲點(diǎn)、線、多邊形等幾何對象的坐標(biāo)信息和屬性信息。目前很多城市的規(guī)劃管理部門的地理地圖都是采用Shapefile文件格式儲存,而勘察部門基本都是使用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)是儲存坐標(biāo)信息(空間位置),由固定長度的文件頭和變長度空間數(shù)據(jù)記錄組成;索引文件(xxx.shx)是對主文件的索引,主要包含坐標(biāo)文件的索引信息;屬性文件(xxx.dbf)記錄屬性信息(地名,單位名,長度,高程,子圖名,編碼等),它是一個(gè)標(biāo)準(zhǔn)的DBF文件,是由頭文件和實(shí)體信息兩部分構(gòu)成。

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

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

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

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

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

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

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

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

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

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

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

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

    個(gè)字節(jié),每條記錄的長度是4+4+20=28個(gè)字節(jié),也就是14個(gè)字,是個(gè)固定長度(0是指到記錄內(nè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文件的打開和讀取

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

    Open FileName For Binary As #2 //打開.shp文件

    ReDim myx(3)As Byte

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

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

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

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

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

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

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

    ........

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

    ........

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

    For i=1 To k

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

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

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

    Set cad3dpoint=Nothing //對象清空

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

    Next i

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

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

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

    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)文檔對象

    .........

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

    For i=1 To geshu

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

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

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

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

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

    Set cad3dpoint=Nothing //對象清空

    Next i

    3 結(jié)論

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

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

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

    猜你喜歡
    字節(jié)長度對象
    神秘來電
    睿士(2023年2期)2023-03-02 02:01:09
    No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
    1米的長度
    No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
    攻略對象的心思好難猜
    意林(2018年3期)2018-03-02 15:17:24
    愛的長度
    怎樣比較簡單的長度
    簡談MC7字節(jié)碼
    基于熵的快速掃描法的FNEA初始對象的生成方法
    區(qū)間對象族的可鎮(zhèn)定性分析
    洱源县| 沭阳县| 嘉鱼县| 青州市| 理塘县| 新源县| 扶风县| 塘沽区| 泰州市| 五寨县| 兰西县| 麻阳| 海阳市| 镇巴县| 十堰市| 县级市| 永兴县| 德兴市| 泗水县| 绥棱县| 宿迁市| 无极县| 辽宁省| 海兴县| 仪陇县| 溆浦县| 南靖县| 札达县| 昌吉市| 南皮县| 长白| 甘孜| 扎兰屯市| 奉化市| 吐鲁番市| 香港| 岳池县| 常州市| 鲜城| 泽普县| 榕江县|