




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、綜合性實(shí)驗(yàn)報告專業(yè) 地理信息系統(tǒng) 年級 11級 學(xué)號 201130670225 姓名 吳秀春時間 2013年7月4日一、 實(shí)驗(yàn)名稱:設(shè)計(jì)程序,實(shí)現(xiàn)對ESRI的Shapefile格式文件進(jìn)行讀取和繪制,并實(shí)現(xiàn)相應(yīng)的地圖(圖形)瀏覽功能。二、 實(shí)驗(yàn)?zāi)康模嚎疾鞂W(xué)生對于課程的基礎(chǔ)知識掌握程度,以及檢驗(yàn)學(xué)生綜合運(yùn)用所學(xué)課程知識和技能分析問題,解決問題的能力,為后續(xù)課程有的放矢地開展與安排提供參考。三、 實(shí)驗(yàn)準(zhǔn)備(數(shù)據(jù)與軟件):1開發(fā)環(huán)境和測試數(shù)據(jù)開發(fā)環(huán)境采用Visual studio 2010.Net,開發(fā)語言為C#,實(shí)驗(yàn)測試數(shù)據(jù)為.shp類型文件2 相關(guān)文檔閱讀:ESRI公開的Shapefile白皮書
2、ESRI Shapefile Technical Description;IBM公開的DBF文件格式。四、 實(shí)驗(yàn)原理(方法):通過進(jìn)行文件的操作,把.shp文件讀取出來,并且通過變量把文件的信息記錄下來,通過面向?qū)ο蟮姆椒?,?shí)現(xiàn)對圖形的繪制操作,從而實(shí)現(xiàn)整一個實(shí)驗(yàn)的主要內(nèi)容。五、 內(nèi)容與步驟:1、 了解shapefile的文件組織形式,以及各個組成部分的數(shù)據(jù)結(jié)構(gòu)(1)一個.shp文件由文件頭和記錄組成。文件頭大小為100個字節(jié),其布局如下表:Position Field Value Type OrderByte 0 File Code 9994 Integer BigByte 4 Unused
3、 0 Integer BigByte 8 Unused 0 Integer BigByte 12 Unused 0 Integer BigByte 16 Unused 0 Integer BigByte 20 Unused 0 Integer BigByte 24 File Length File Length Integer BigByte 28 Version 1000 Integer LittleByte 32 Shape Type Shape TypeInteger LittleByte 36 Bounding Box Xmin Double LittleByte 44 Boundin
4、g Box Ymin Double LittleByte 52 Bounding Box Xmax Double LittleByte 60 Bounding Box Ymax Double LittleByte 68* Bounding Box Zmin Double LittleByte 76* Bounding Box Zmax Double LittleByte 84* Bounding Box Mmin Double LittleByte 92* Bounding BoxMmax Double Little* Unused, with value 0.0, if not Measur
5、ed or Z typel 注意其中的字節(jié)順序,Big表示大尾(big endian)型字節(jié)順序,即是高低位字節(jié)是反序的,主要適用于Sun or Motorola平臺,而Little表示小尾(little endian)型字節(jié)順序,高低位字節(jié)順序不變,主要使用在PC or Intel平臺。在讀取的字節(jié)為Big時,需要進(jìn)行字節(jié)順序交換,才能得出正確的值。一個把Big順序轉(zhuǎn)換為Little順序的函數(shù)可以如下:int Big2LittleEndian(int num) int reverse; /返回結(jié)果 char bit0, bit1, bit2, bit3; bit0 = (num & 0x00
6、0000ff); bit1 = (num & 0x0000ff00) 8; bit2 = (num & 0x00ff0000) 16; bit3 = (num & 0xff000000) 24; reverse = (bit0 24) | (bit1 16) | (bit2 8) | (bit3); return reverse;l 文件頭中第32-35位字節(jié)為一個整型,其值反映了shapefile的圖形對象類型,具體值對應(yīng)含義如下:Value Shape Type0 Null Shape1 Point3 PolyLine5 Polygon8 MultiPoint11 PointZ13 Pol
7、yLineZ15 PolygonZ18 MultiPointZ21 PointM23 PolyLineM25 PolygonM28 MultiPointM31 MultiPatchl 第36-67個字節(jié)包含了圖幅的范圍大小。(2)、每條記錄由記錄頭和實(shí)體內(nèi)容組成,記錄頭格式固定,具體組成如下所示:Position Field Value Type Byte OrderByte 0Record Number Record Number Integer BigByte 4 Content Length Content Length Integer Big記錄頭包含8個字節(jié),0-3表示記錄的順序號,
8、4-7表示記錄實(shí)體自身的大小。實(shí)體的內(nèi)容根據(jù)對象類型不同而變化,需根據(jù)具體情況處理。關(guān)于Shapefile的.shx文件的說明.shx文件由文件頭和記錄組成,文件頭與前述.shp文件一致,但需注意File Length字段的值不一樣。而每條記錄由2個整型組成,具體內(nèi)容如下:Position Field Value Type Byte OrderByte 0 Offset Offset Integer BigByte 4 Content Length Content Length Integer Big其中,offset表示該條記錄在.shp文件中的字節(jié)位置,而Content Length說明了
9、記錄的大小。關(guān)于.DBF文件的說明標(biāo)準(zhǔn)的DBF文件,是由頭文件和實(shí)體信息兩部分構(gòu)成(如圖1所示)。文件頭記錄1記錄2記錄3記錄4記錄n圖1 DBF文件的結(jié)構(gòu)(1)、文件頭部分文件頭部分的長度是不定長的,它主要對DBF文件作了一些總體說明(表),其中最主要的是對這個DBF文件的記錄項(xiàng)的信息進(jìn)行了詳細(xì)地描述,比如對每個記錄項(xiàng)的名稱、數(shù)據(jù)類型、長度等信息都有具體的說明。在文件中的位置內(nèi)容說明01個字節(jié)表示當(dāng)前的版本信息133個字節(jié)表示最近的更新日期,按照YYMMDD格式。471個32位數(shù)文件中的記錄條數(shù)。891個16位數(shù)文件頭中的字節(jié)數(shù)。10111個16位數(shù)一條記錄中的字節(jié)長度。12132個字節(jié)保留
10、字節(jié),用于以后添加新的說明性信息時使用,這里用0來填寫。141個字節(jié)表示未完成的操作。 151個字節(jié)dBASE IV編密碼標(biāo)記。162712個字節(jié)保留字節(jié),用于多用戶處理時使用。281個字節(jié)DBF文件的MDX標(biāo)識。在創(chuàng)建一個DBF 表時 ,如果使用了MDX 格式的索引文件,那么 DBF 表的表頭中的這個字節(jié)就自動被設(shè)置了一個標(biāo)志,當(dāng)你下次試圖重新打開這個DBF表的時候,數(shù)據(jù)引擎會自動識別這個標(biāo)志,如果此標(biāo)志為真,則數(shù)據(jù)引擎將試圖打開相應(yīng)的MDX 文件。291個字節(jié)Language driver ID.30312個字節(jié)保留字節(jié),用于以后添加新的說明性信息時使用,這里用0來填寫。32X(n*32)
11、個字節(jié)記錄項(xiàng)信息描述數(shù)組。n表示記錄項(xiàng)的個數(shù)。這個數(shù)組的結(jié)構(gòu)在下表中有詳細(xì)的解釋。X11個字節(jié)作為記錄項(xiàng)終止標(biāo)識。文件(.dbf)的文件頭位置內(nèi)容說明01011個字節(jié)記錄項(xiàng)名稱,是ASCII碼值。111個字節(jié)記錄項(xiàng)的數(shù)據(jù)類型,是ASCII碼值。(B、C、D、G、L、M和N,具體的解釋見下表)。12154個字節(jié)保留字節(jié),用于以后添加新的說明性信息時使用,這里用0來填寫。161個字節(jié)記錄項(xiàng)長度,二進(jìn)制型。171個字節(jié)記錄項(xiàng)的精度,二進(jìn)制型。18192個字節(jié)保留字節(jié),用于以后添加新的說明性信息時使用,這里用0來填寫。201個字節(jié)工作區(qū)ID。213010個字節(jié)保留字節(jié),用于以后添加新的說明性信息時使用
12、,這里用0來填寫。311個字節(jié)MDX標(biāo)識。如果存在一個MDX 格式的索引文件,那么這個記錄項(xiàng)為真,否則為空。 記錄項(xiàng)信息描述代碼數(shù)據(jù)類型允許輸入的數(shù)據(jù)B二進(jìn)制型各種字符。C字符型各種字符。D日期型用于區(qū)分年、月、日的數(shù)字和一個字符,內(nèi)部存儲按照YYYYMMDD格式。G(General or OLE)各種字符。N數(shù)值型(Numeric)- . 0 1 2 3 4 5 6 7 8 9 L邏輯型(Logical)? Y y N n T t F f (? 表示沒有初始化)。 M(Memo)各種字符。dbf文件中的數(shù)據(jù)類型注意:記錄項(xiàng)的數(shù)目在文件頭中沒有明確給出,但是可以根據(jù)第8-9字節(jié)的整型知道文件頭
13、的大小,減去其他的固定的字節(jié)數(shù)(32),然后除以32就可以得出其值n。(2)、實(shí)體信息實(shí)體信息部分就是一條記錄,每條記錄都是由若干個記錄項(xiàng)構(gòu)成,因此只要依次循環(huán)讀取每條記錄就可以了。2、 系統(tǒng)功能需求分析:根據(jù)要求,該程序必須滿足最基本的三個功能,一個是能夠?qū)hpefile文件進(jìn)行讀取,另外兩個分別是對文件屬性的瀏覽還有就是繪制圖形文件,所以在程序設(shè)計(jì)的過程之中,必須要讓自己的系統(tǒng)能夠滿足這三個最基本的要求。3、 整個程序一共有六個模塊,系統(tǒng)圖如圖所示:本程序系統(tǒng)設(shè)計(jì)六個模塊,分別是讀取文件,查看文件屬性信息,繪制圖形,修改顏色,修改線寬和清空圖形。模塊圖如圖所示: 程序系統(tǒng)讀取.shp文件
14、查看文件屬性繪制圖形修改顏色修改線寬清空圖形4、 打開軟件,新建windows 窗體項(xiàng)目,如圖所示:5、 在FORM窗體上添加1個menustrip控件,6個label控件,1個penul控件,1個textbook控件,3個button控件,2個groupbox控件并相應(yīng)的修改部分控件enabled屬性,將之初始化為flase。如圖所示:6、 為項(xiàng)目添加一個新的窗體form2,用來實(shí)現(xiàn)改變線條寬度的功能,結(jié)果如圖所示:7、 為項(xiàng)目添加一個新的類,取名為helperclass。為即將開展的工作流程做好基礎(chǔ)準(zhǔn)備。如圖所示:8、 編寫代碼,完善程序的功能。(1) 、heleperclass程序代碼段
15、設(shè)計(jì),主要函數(shù)部分如圖所示:(2) helperclass代碼段2,如圖所示:(3) 對form1的代碼進(jìn)行編寫,主要自定義了draw的畫圖函數(shù)和描點(diǎn)的函數(shù),其代碼段如圖所示:(4) 對各個控件進(jìn)行代碼添加,實(shí)現(xiàn)控件的功能,在過程之中有用到異常處理try,catch語句,讓程序不至于輕易崩潰,結(jié)果如圖所示:(5) 實(shí)現(xiàn)關(guān)閉文件功能代碼撰寫,此過程中把pg重新實(shí)例化,代碼段如圖所示:(6) 定義一個顏色的靜態(tài)變量,把它賦予初值為黑色,在程序運(yùn)行的時候可以對圖像的顏色進(jìn)行修改,其代碼段如圖所示:(7) 修改線條寬度代碼如圖所示:六、 實(shí)驗(yàn)成果:1、 讀取文件測試2、 查看文件屬性測試:3、 繪制圖
16、形測試:4、 修改線條顏色測試:5、 修改線條寬度測試:6、 清空圖形測試:七、 實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)花費(fèi)的時間挺多的,因?yàn)橐婚_始根本就看不懂實(shí)驗(yàn)要處理的對象文件的屬性還有格式說明?;藘商斓臅r間,把那一份白皮書的簡略版看了,也弄懂了里面說的一些格式結(jié)構(gòu)的東西。接下來就是要開始編寫程序。雖然說我們的目標(biāo)是很清晰的,就是要實(shí)現(xiàn)最最基本的三個功能,但是對于文件操作又不夠熟悉,再加上對于.net類庫接觸的不夠深入,很多時候要實(shí)現(xiàn)的方法上就很難前進(jìn)。就好像如何關(guān)閉文件,如何打開文件那一塊,琢磨了好久,最后通過自己查閱資料,終于找到了方法,應(yīng)該說是明白了filestream這個類的一些基本的使用方法。對于控
17、件的操作,本人的風(fēng)格和實(shí)驗(yàn)三實(shí)驗(yàn)實(shí)現(xiàn)的風(fēng)格比較相像。在代碼段上面采取了比較嚴(yán)謹(jǐn)?shù)淖珜?,讓程序運(yùn)行的每一個步驟都合乎邏輯。就好比說就算讓一個什么也不懂的人去操作你的軟件,你的軟件也能夠有足夠的容納性,不至于輕易地崩潰掉。這也是一個軟件最最基本的要求。在這次實(shí)驗(yàn)中,收獲最大的,就是和同學(xué)團(tuán)隊(duì)合作一起討論代碼,一起討論如何構(gòu)建模塊,一起討論如何解決語法和邏輯錯誤。在以后的道路上,僅僅憑著一個人的力量,是很難把事情做好的,只有有一股團(tuán)隊(duì)合作的精神,才能夠把事情做好。在實(shí)驗(yàn)中,我也發(fā)現(xiàn)了自己存在很多不足,首先自己對于C#語言的了解太少太少,對于很多概念和知識至今都沒有很清晰的認(rèn)識。對于.net里面豐富的
18、類庫,自己了解的僅僅是九牛一毛,這讓自己在處理問題的時候經(jīng)常都是不知如何下手。這導(dǎo)致自己的效率并不算高。但是無論怎么說,遇到困難就應(yīng)該想辦法解決,可以自己去找資料,可以詢問老師同學(xué),通過此次實(shí)驗(yàn),自己對于c#這門語言有了更進(jìn)一步的了解,在以后的學(xué)習(xí)過程中,需要更加努力,才能有所收獲。八、附錄:源程序代碼:1.form1代碼:using System;using System.Collections.Generic;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnos
19、tics;using System.Drawing;using System.Drawing.Imaging;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Drawing2D;using Microsoft.VisualBasic;namespace 對?shapefile文?件t讀寫繪?制? public partial class Form1 : Form public Form1() InitializeComponent(); button1.Enabled = f
20、alse;/首骸?先將?按恪?鈕¥設(shè)?置?為a不?可用? button2.Enabled = false; button3.Enabled = false; textBox1.Enabled = false; public static Color gColor=Color.Black; /靜2態(tài)?顏?色?變?量?,默?認(rèn)?為a黑色? public static int gLineWidth;/靜2態(tài)?線?寬變?量? string path; /用?于?傳?遞蘗路徑?名?的?字?符?串?變?量? static Bitmap s = new Bitmap(100, 100); Graphics
21、tu = Graphics.FromImage(s); /定義?graphics類?的?對?象tu helperclass pg = new helperclass(); /類?對?象實(shí)害?例化 private void Form1_Load(object sender, EventArgs e) tu = this.panel1.CreateGraphics(); label6.Text = ; timer1.Enabled = true; timer1.Interval = 1000; /設(shè)?置?計(jì)?時骸?器的?時骸?間?間?隔? public void draw() /畫-圖?函數(shù)簓 P
22、en pen1 = new Pen(gColor,gLineWidth); /通?過ypen1實(shí)害?現(xiàn)?修T改?顏?色?功|能 for (int i = 0; i pg.PolygonNumber; i+) /循-環(huán)實(shí)害?現(xiàn)?對?每?一?個?多邊?形?進(jìn)?行D繪?制? PointF ps = pg.mpysi.polygon.ToArray(); /定義?平?面?上?面?的?坐?標(biāo)括?有瓺序?qū)? tuxiang(ps); /調(diào)獺?用?tuxiang函數(shù)簓的?功|能 tu.DrawPolygon(pen1, ps); public void tuxiang(params PointF pt) f
23、or (int i = 0; i pt.Length; i+) pti.X = (float)(pti.X - pg.HBoundingBox0) / (pg.HBoundingBox2 - pg.HBoundingBox0) * this.panel1.Width);/獲?取?點(diǎn)?的?橫坐?標(biāo)括? pti.Y = (float)(pg.HBoundingBox3 - pti.Y) / (pg.HBoundingBox3 - pg.HBoundingBox1) * this.panel1.Height);/獲?取?點(diǎn)?的?縱罽坐?標(biāo)括? public void 讀入?文?件tToolStrip
24、MenuItem_Click(object sender, EventArgs e) OpenFileDialog openflg = new OpenFileDialog(); openflg.Filter = *.shp|*.SHP; /尋找合?適酣?的?.shp文?件t openflg.Multiselect = false; /把?選?擇?文?件t類?型的?功|能改?成否? if (openflg.ShowDialog() = DialogResult.OK) path = openflg.FileName; /把?文?件t路徑?用?path保饋?存? button2.Enabled
25、= true; MessageBox.Show(文?件t讀取?成功|!?, 提?示?); 選?項(xiàng)?ToolStripMenuItem.Enabled = true; 關(guān)?閉?文?件tToolStripMenuItem.Enabled = true; 保饋?存?圖?片?ToolStripMenuItem.Enabled = true; 讀入?文?件tToolStripMenuItem.Enabled = false; private void button1_Click(object sender, EventArgs e) /繪?圖? tu.Clear(this.BackColor); /繪?
26、圖?前把?當(dāng)獺?前的?圖?片?區(qū)?的?內(nèi)容清?空? draw(); button3.Enabled = true; 選?項(xiàng)?ToolStripMenuItem.Enabled = true; private void button2_Click(object sender, EventArgs e) /顯?示?文?件t屬?性?信?息 try /進(jìn)?行D異皚?常捕?捉? string s = pg.readfile(path); textBox1.Text = 這a個?文?件t共2有瓺個? + pg.PolygonNumber + 多邊?形? + nt + s; button1.Enabled
27、= true; button3.Enabled = true; catch /異皚?常處鋦理? MessageBox.Show(本?軟?件t不?支持?點(diǎn)?類?型文?件t,?請?重?新?進(jìn)?行D選?擇?!?, 提?示?, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); private void 關(guān)?閉?程序ToolStripMenuItem_Click(object sender, EventArgs e) /退?出?程序 DialogResult result = MessageBox.Show(確?定要癮退?出???, 提?示?, Mes
28、sageBoxButtons.OKCancel); if (result = DialogResult.OK) Application.Exit(); private void 關(guān)?閉?文?件tToolStripMenuItem_Click(object sender, EventArgs e) /更新?數(shù)簓據(jù)Y DialogResult result = MessageBox.Show(確?定要癮關(guān)?閉?當(dāng)獺?前文?件t??, 提?示?, MessageBoxButtons.OKCancel);/實(shí)害?現(xiàn)?選?擇?功|能,?選?擇?確?定就退?出?,?否?就保饋?留?在原-來?的?界?面?
29、if (result = DialogResult.OK) tu.Clear(this.BackColor); /清?空?當(dāng)獺?前圖?片?區(qū)?的?內(nèi)容 textBox1.Text = ; /清?空?當(dāng)獺?前的?文?檔苔?區(qū)?的?內(nèi)容 pg = new helperclass(); /類?對?象重?新?實(shí)害?例化 button1.Enabled = false; button2.Enabled = false; 選?項(xiàng)?ToolStripMenuItem.Enabled = false; 讀入?文?件tToolStripMenuItem.Enabled = true; 關(guān)?閉?文?件tToolS
30、tripMenuItem.Enabled = false; 保饋?存?圖?片?ToolStripMenuItem.Enabled = false; button3.Enabled = false; MessageBox.Show(請?打洙?開a文?件t或者?退?出?程序!?, 提?示?); private void 修T改?顏?色?ToolStripMenuItem_Click(object sender, EventArgs e) /修T改?顏?色? ColorDialog cdlg = new ColorDialog(); cdlg.Color = gColor; if (cdlg.Sho
31、wDialog() = DialogResult.OK) gColor = cdlg.Color; draw(); MessageBox.Show(修T改?顏?色?成功|!?, 提?示?); private void 線?條?寬度ToolStripMenuItem_Click(object sender, EventArgs e) 修T改?線?條?寬度 lf = new 修T改?線?條?寬度(); lf.ShowDialog(); tu.Clear(this.BackColor); draw(); MessageBox.Show(修T改?線?寬成功|!?, 提?示?); private voi
32、d 保饋?存?圖?片?ToolStripMenuItem_Click(object sender, EventArgs e) /保饋?存?圖?片? s.Save(c:baocunde.jpeg, ImageFormat.Jpeg); MessageBox.Show(圖?片?已?保饋?存?!?); private void button3_Click(object sender, EventArgs e) /清?空?當(dāng)獺?前圖?片?區(qū)?域? tu.Clear(this.BackColor); button3.Enabled = false; 選?項(xiàng)?ToolStripMenuItem.Enabl
33、ed = false; MessageBox.Show(圖?形?區(qū)?域?已?經(jīng)-被?清?空?!?, 提?示?); private void timer1_Tick(object sender, EventArgs e) label6.Text = DateTime.Now.ToLongTimeString(); /在labell中D顯?示?時骸?間? 2、 helperclass類代碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using S
34、ystem.Drawing;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Drawing.Imaging;using System.Windows.Forms;using System.Drawing.Drawing2D;using Microsoft.VisualBasic;namespace 對?shapefile文?件t讀寫繪?制? class helperclass string shpetype = ; /用?來?
35、記?錄?圖?形?類?型的?字?符?串?變?量? int filelength; / 文?件t長度 public int FileLength /定義?方?法?實(shí)害?現(xiàn)?獲?取?文?件t長度(都?是?實(shí)害?現(xiàn)?接口的?方?法?,?以?此?來?獲?取?文?件t的?屬?性?) get return filelength; set filelength = value; int version; /定義?版?本? public int Version /定義?獲?取?版?本?的?方?法? get return version; set version = value; int hshapetype;
36、/ 頭?文?件t中D的?shape類?型 public int HShapeType get return hshapetype; set hshapetype = value; public double HBoundingBox = new double8; / 頭?文?件t中D的?邊?界?盒D 邊?界?盒D的?定義?參?考?.shp文?件t的?白恪?皮書酣? int recordnumber; /記?錄?頭? public int RecordNumber / 記?錄?數(shù)簓目? get return recordnumber; set recordnumber = value; int
37、contentlength; / 內(nèi)容長度 public int ContentLength get return contentlength; set contentlength = value; int pshapetype; /記?錄?內(nèi)容 public int PShapeType / 記?錄?內(nèi)容中D的?shape類?型 get return pshapetype; set pshapetype = value; public double PBoundingBox = new double4; / 記?錄?內(nèi)容中D的?邊?界?盒D int numparts; /部?分?的?數(shù)簓目?
38、 public int NumParts get return numparts; set numparts = value; int numpoints = 0; / 點(diǎn)?的?總哩?數(shù)簓目? public int NumPoints get return numpoints; set numpoints = value; public int Parts; / 在部?分?中D第臺?一?個?點(diǎn)?的?索引皔 public PointF points; /定義?浮?點(diǎn)?有瓺序?qū)? /所有瓺部?分?的?點(diǎn)? int polygonnumber = 0; / 多邊?形?個?數(shù)簓 public int
39、PolygonNumber get return polygonnumber; set polygonnumber = value; public IList mpys = new List(); public string readfile(string path) StringBuilder str = new StringBuilder(); /為a此?類?創(chuàng)洹?建對?象,?實(shí)害?際可以?考?慮?為astring類?型的?變?量? FileStream file = new FileStream(path, FileMode.Open); /為afilestream類?創(chuàng)洹?建file對
40、?象,?并打洙?開a文?件t BinaryReader bw = new BinaryReader(file); /為a此?類?創(chuàng)洹?建對?象,?實(shí)害?現(xiàn)?讀取?數(shù)簓據(jù)Y做?二t進(jìn)?制?值 #region 讀取?頭?文?件t /開a始?讀文?件t bw.ReadBytes(24); /從洙?當(dāng)獺?前流?中D讀取?下?24個?字?節(jié),?并使?當(dāng)獺?前位?置?提?升24個?字?節(jié)(輟?以?下?的?定義?需要癮參?考?.shp文?件t的?格?式?說明)? FileLength = readbigint(bw.ReadInt32(); /獲?取?文?件t長度,?在.shp文?件t中Dfile leng
41、th 的?位?置?在 byte 2427 即一?個?int 類?型數(shù)簓據(jù)Y Version = bw.ReadInt32(); /獲?取?文?件t的?版?本? 文?件t位?置?同?上? HShapeType = bw.ReadInt32(); /獲?取?文?件t圖?形?的?形?狀痢? 其?位?置?如?上? HBoundingBox0 = bw.ReadDouble();/Xmin /獲?取?邊?界?盒D HBoundingBox1 = bw.ReadDouble();/Ymin HBoundingBox2 = bw.ReadDouble();/Xmax HBoundingBox3 = bw.ReadDouble();/Ymax HBoundingBox4 = bw.ReadDouble();/Zmin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度車間承包與安全環(huán)保管理協(xié)議
- 2025至2030年中國線路件類鑄件數(shù)據(jù)監(jiān)測研究報告
- 二零二五年度兼職圖形設(shè)計(jì)師勞動合同
- 二零二五年度模具專利權(quán)歸屬及許可使用合同
- 二零二五年度環(huán)保設(shè)備生產(chǎn)企業(yè)技術(shù)人員薪酬與環(huán)保責(zé)任合同
- 二零二五年度智能機(jī)器人投資人投資協(xié)議
- 二零二五年度農(nóng)村土地流轉(zhuǎn)合同:農(nóng)村土地流轉(zhuǎn)中的流轉(zhuǎn)合同續(xù)簽與更新
- 二零二五年度農(nóng)村宅基地租賃與農(nóng)村電商品牌推廣協(xié)議
- 二零二五企業(yè)法人變更事宜免責(zé)協(xié)議書模板
- 2025年度珠寶首飾經(jīng)銷商返點(diǎn)獎勵協(xié)議
- 2025年合肥職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 企業(yè)級軟件開發(fā)作業(yè)指導(dǎo)書
- 《中國古代文學(xué)史及作品選II》教學(xué)大綱
- 代工生產(chǎn)合同范本
- 瑜伽課程合同轉(zhuǎn)讓協(xié)議書范本
- 個人經(jīng)營性貸款合同模板
- 人教版英語2025七年級下冊 Unit1Animal Friends教師版 語法講解+練習(xí)
- DeepSeek新手入門教程
- 課件:《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》學(xué)習(xí)宣講
- 2025年山東化工職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
評論
0/150
提交評論