第一篇:arcgis上機(jī)實(shí)習(xí)報(bào)告
課程實(shí)習(xí)報(bào)告
實(shí)習(xí)課程:《ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報(bào)告》
姓
名:
學(xué)
號(hào):
專
業(yè):
班
級(jí):
2012年 6月
20日
ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報(bào)告
實(shí)習(xí)目的:
通過(guò)學(xué)習(xí)Arcgis這款Gis應(yīng)用軟件熟練我們的實(shí)際應(yīng)用能力,深入理解GIS軟件應(yīng)用的核心部分,通過(guò)熟練Arcgis能掌握類似相關(guān)軟件操作,加強(qiáng)動(dòng)手能力。
實(shí)習(xí)步驟:
1.對(duì)Arcgis軟件整體掌握,并與之前各類軟件操作對(duì)比和學(xué)習(xí)。
2.具體對(duì)軟件操作掌握空間數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變、數(shù)據(jù)的可視化表達(dá)。
3.Arcgis的空間分析能力的掌握:矢量數(shù)據(jù)的空間分析、柵格數(shù)據(jù)的空間分析、三維分析、地統(tǒng)計(jì)分析、水文分析等。4.掌握Arcgis的空間分析建模。
實(shí)習(xí)內(nèi)容:
根據(jù)練習(xí)內(nèi)容,選擇了練習(xí)第3、4、5、7、12章的內(nèi)容,其余在課下自己練習(xí)完成,這些章內(nèi)容分別為:空間數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變換、數(shù)據(jù)的可視化表達(dá)、矢量數(shù)據(jù)空間分析、空間分析建模
Geodatabase是一種采用標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)技術(shù)來(lái)表現(xiàn)地理信息的數(shù)據(jù)模型。Geodatabase支持在標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)表中存儲(chǔ)和管理地理信息。一. 基于Geodatabase的數(shù)據(jù)庫(kù)設(shè)計(jì)
Geodatabase支持面向?qū)ο蟮氖噶繑?shù)據(jù)模型,它將地理數(shù)據(jù)組織成一個(gè)數(shù)據(jù)對(duì)象的結(jié)構(gòu)體系。在Geodatabase模型中,實(shí)體被表示為屬性,行為,關(guān)系的對(duì)象。Geodatabase還允許用戶定義對(duì)象之間的關(guān)系,以及保持對(duì)象之間參照完整性的規(guī)則。Geodatabase也定義了簡(jiǎn)單的對(duì)象,地理要素,幾何網(wǎng)絡(luò),注記要素等多種對(duì)象類型。二. Geodatabase中的信息類型
1.表(table):是記錄的集合,每個(gè)記錄(行)中包括許多列(字段);
2.對(duì)象類(object classes):對(duì)象表示一個(gè)沒(méi)有空間幾何的實(shí)體,沒(méi)有位置相關(guān)信息,但是可以通過(guò)關(guān)系類與要素聯(lián)系起來(lái),一個(gè)對(duì)象類作為一個(gè)表存儲(chǔ)在Geodatabase中,一個(gè)對(duì)象是表中的一行。3.要素類(feature classes):表示有空間幾何的實(shí)體,有位置相關(guān)信息。要素類是具有相同的屬性和相同的幾何表示類型的要素集合。1)簡(jiǎn)單要素類:沒(méi)有拓?fù)潢P(guān)聯(lián),包括點(diǎn),線,多邊形,注記等多種類型,以要素的方式管理,存放在要素集內(nèi)外均可。
2)復(fù)雜要素類則是有拓?fù)潢P(guān)聯(lián)的若干個(gè)要素類的組合,必須存放在同一個(gè)要素?cái)?shù)據(jù)集中,例如拓?fù)湟?、幾何網(wǎng)絡(luò)等類型。
4.子類(subtype):在要素類內(nèi)部可以劃分若干個(gè)次一級(jí)的組,每個(gè)組是一個(gè)子類。每個(gè)子類有其自己的完整性規(guī)則和GIS行為。5.要素?cái)?shù)據(jù)集(feature database):要素?cái)?shù)據(jù)集是一個(gè)具有相同空間參照的要素類的集合。
6.關(guān)系(relationships):是一種表(或要素類)與表(或要素類)之間的聯(lián)系機(jī)制。關(guān)系類建立在對(duì)象(或要素)類之間,由一個(gè)對(duì)象(或要素)類指向另一個(gè)對(duì)象(或要素)類。
7.柵格數(shù)據(jù)集(raster data sets):影像作為柵格表來(lái)管理。
8.拓?fù)潢P(guān)系(topology):拓?fù)潢P(guān)系將參與拓?fù)涞母鱾€(gè)要素類集成在一個(gè)拓?fù)鋱D中作為一個(gè)拓?fù)鋯卧獊?lái)管理,規(guī)定同一個(gè)要素類中的各個(gè)要素如何與其他要素共享幾何或不同要素類之間如何共享幾何。9.元數(shù)據(jù):對(duì)數(shù)據(jù)庫(kù)中各個(gè)數(shù)據(jù)元素的描述。
10.幾何網(wǎng)絡(luò)(geometric network):若干個(gè)要素類作為一個(gè)整體參與到幾何網(wǎng)絡(luò)的構(gòu)造,Geodatabase通過(guò)拓?fù)潢P(guān)聯(lián)保證參與到幾何網(wǎng)絡(luò)中的各個(gè)要素類的空間幾何的連通性。幾何網(wǎng)絡(luò)將導(dǎo)致保證網(wǎng)絡(luò)連通性的行為。
三. Geodatabase的優(yōu)勢(shì):
1.所有圖形數(shù)據(jù)和屬性數(shù)據(jù)統(tǒng)一存儲(chǔ)在商業(yè)DBMS中。
2.便于使用DBMS支持的多用戶并發(fā)訪問(wèn)、事務(wù)管理、失敗事務(wù)恢復(fù)、用戶權(quán)限策略等機(jī)制,有利于空間信息共享、數(shù)據(jù)安全,提高了數(shù)據(jù)庫(kù)性能。
3.支持智能化的要素、規(guī)則和關(guān)系。4.完善的用戶支持。
四.Geodatabase數(shù)據(jù)庫(kù)設(shè)計(jì)的內(nèi)容
1.基本內(nèi)容是規(guī)定 構(gòu)成數(shù)據(jù)庫(kù)的要素類、柵格數(shù)據(jù)集、其他表,以及表之間的各種關(guān)系。
2.其中,要素(或?qū)ο螅╊愔g的關(guān)系通過(guò)要素?cái)?shù)據(jù)集、關(guān)系類、拓?fù)鋪?lái)管理。
3.一個(gè)要素?cái)?shù)據(jù)集中的各個(gè)要素類具有相同的空間參照;拓?fù)漕?、幾何網(wǎng)絡(luò)中的要素類受拓?fù)渫暾约s束。五
Geodatabase數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟
1.用戶視圖建模 2.定義實(shí)體和關(guān)系 3.明確實(shí)體的表示 4.匹配到Geodatabase模型 5.組織地理數(shù)據(jù)集
六.將地理實(shí)體表示為Geodatabase數(shù)據(jù)類型
要在識(shí)別地理實(shí)體并決定其幾何表示類型之后,決定數(shù)據(jù)如何在Geodatabase中表示。具體包括兩方面處理:
1.決定各種地理實(shí)體的表示類型及其拓?fù)潢P(guān)系; 2.決定各實(shí)體的屬性字段。
決定實(shí)體的表示類型的依據(jù)是其幾何表示類型:點(diǎn)實(shí)體用點(diǎn)要素、簡(jiǎn)單節(jié)點(diǎn)、復(fù)合節(jié)點(diǎn)表示,線實(shí)體用線要素、簡(jiǎn)單邊、復(fù)合邊表示,面實(shí)體用多邊形要素表示,表面實(shí)體用TIN或柵格數(shù)據(jù)集表示,空間位置無(wú)關(guān)的實(shí)體用對(duì)象(表)表示。
? 其中點(diǎn)、線、面實(shí)體的離散分布有兩種:
1.獨(dú)立分布的實(shí)體,與其他要素?zé)o關(guān),可以表示為簡(jiǎn)單的點(diǎn)、線、面要素;
2.與其他要素的分布相關(guān),這種點(diǎn)、線實(shí)體可以表示為節(jié)點(diǎn)、邊要素,面實(shí)體表示為有拓?fù)潢P(guān)系的多邊形要素。
? 考慮要素之間的拓?fù)潢P(guān)系,定義復(fù)合要素類:平面拓?fù)浜蛶缀尉W(wǎng)絡(luò)。?平面拓?fù)鋸?qiáng)制保證要素不能相互交叉而沒(méi)有交點(diǎn)。如土地或區(qū)劃系統(tǒng),采用平面拓?fù)涔芾硪亻g的公共邊。
? 幾何網(wǎng)絡(luò)強(qiáng)制保持網(wǎng)絡(luò)要素之間的連通性,是網(wǎng)絡(luò)編輯易于操作。如對(duì)于線狀系統(tǒng),交通網(wǎng)絡(luò),多采用幾何網(wǎng)絡(luò)表示。? 確定對(duì)象的屬性類型
1.主要依據(jù)要素(或?qū)ο螅┑膶n}性質(zhì)而定。
2.每個(gè)實(shí)體可能有多種屬性,依據(jù)相關(guān)原則確定每種屬性(字段)的數(shù)據(jù)類型,使用默認(rèn)值、域等工具保證數(shù)據(jù)的完整性。六. 將數(shù)據(jù)組織到Geodatabase地理數(shù)據(jù)集
1.工作包括:
(1).劃分要素類和子類(2).規(guī)定要素類的拓?fù)潢P(guān)系(3.)構(gòu)建地理數(shù)據(jù)集(4.)組織地理數(shù)據(jù)庫(kù)
(1)劃分要素類和子類
下列情況下必須建立單列的要素類:
1)當(dāng)各組相關(guān)要素的屬性字段組合根本不同時(shí) 2)當(dāng)各組相關(guān)要素需要有特有的定制行為時(shí) 3)當(dāng)需要對(duì)各組要素賦予不同存取權(quán)限時(shí)
4)當(dāng)有些要素要采用版本管理存取而另一些要素不需要版本管理時(shí)(2)規(guī)定要素類的拓?fù)潢P(guān)系
1)將相關(guān)要素分組為幾何網(wǎng)絡(luò)好或平面拓?fù)?/p>
2)如果要素類是獨(dú)立點(diǎn)、線、面要素,那么它不參與幾何網(wǎng)絡(luò)或者平面拓?fù)?/p>
3)如果要素類是簡(jiǎn)單邊、簡(jiǎn)單節(jié)點(diǎn)、復(fù)合邊、復(fù)合節(jié)點(diǎn),那么它參與幾何網(wǎng)絡(luò)的構(gòu)成
4)如果要素類是拓?fù)潢P(guān)聯(lián)的多邊形要素類,其內(nèi)部各個(gè)要素必須滿足特定的拓?fù)潢P(guān)系(3)構(gòu)建地理數(shù)據(jù)集
1)要素?cái)?shù)據(jù)集是一個(gè)容器,使用它可以將相似的要素類組合在一起。2)將具有相同空間參照的要素類組織到同一個(gè)要素?cái)?shù)據(jù)集中是有利的,因?yàn)椴煌財(cái)?shù)據(jù)集在運(yùn)算過(guò)程中可能會(huì)出現(xiàn)細(xì)微的差別而引起數(shù)據(jù)不一致。3)同時(shí)參加到平面拓?fù)浠驇缀尉W(wǎng)絡(luò)中的各個(gè)要素類必須被組織到同一個(gè)要素?cái)?shù)據(jù)集中。
(4)最后將要素?cái)?shù)據(jù)集和要素類組合起來(lái)。
1)確定了各要素及其拓?fù)渎?lián)系之后,最后需要將它們組合到地理數(shù)據(jù)庫(kù)中。2)如果企業(yè)用戶包括多個(gè)部門,不同部門使用不同的數(shù)據(jù)集。地理數(shù)據(jù)庫(kù)可以安裝企業(yè)組織結(jié)構(gòu)部署。
4)如果使用personal Geodatabases,由于數(shù)據(jù)庫(kù)容量的限制,必須對(duì)數(shù)據(jù)庫(kù)按專題或空間進(jìn)行分割。七. Geodatabase的建庫(kù)步驟
1.在F盤中建立自己的文件夾070141; 2.在自己的文件夾中建立個(gè)人數(shù)據(jù)庫(kù)database;截圖說(shuō)明
3.在personal database中建立點(diǎn)要素a,線要素aa,面要素aaa。八. Geodatabase的拓?fù)浣?/p>
若干個(gè)要素類作為一個(gè)整體參與到幾何網(wǎng)絡(luò)的構(gòu)造,Geodatabase通過(guò)拓?fù)潢P(guān)聯(lián)保證參與到幾何網(wǎng)絡(luò)中的各個(gè)要素類的空間幾何的連通性。幾何網(wǎng)絡(luò)將導(dǎo)致保證網(wǎng)絡(luò)連通性的行為。
1.右鍵單擊數(shù)據(jù)庫(kù)database,點(diǎn)擊new再點(diǎn)擊Feature Dataset
截圖說(shuō)明:
出現(xiàn)對(duì)話框New Feature Dataset 在name中填寫名字topology;2.點(diǎn)擊“下一步”出現(xiàn)如下對(duì)話框,點(diǎn)擊對(duì)話框中的Import,又出現(xiàn)對(duì)話框在Ext文件夾中點(diǎn)擊Blocks.shp,點(diǎn)擊Add即可添加數(shù)據(jù);
截圖說(shuō)明;
再點(diǎn)擊繼續(xù)點(diǎn)擊下一步,下一步,F(xiàn)inish,即可建立topology; 3.右鍵單擊topology,點(diǎn)擊Import,再點(diǎn)擊Feature Class(mulitiple)
截圖說(shuō)明:
出現(xiàn)如下對(duì)話框,在對(duì)話框中點(diǎn)擊第一個(gè)圖標(biāo)瀏覽,在出現(xiàn)的對(duì)話框中加入Ex1中的兩個(gè)數(shù)據(jù)Blocks.shp和Parcels.shp,點(diǎn)擊Add;
點(diǎn)擊ok,則topology中增加了Blocks.shp和Parcels.shp兩個(gè)數(shù)據(jù)項(xiàng); 4.右鍵單擊topology中的Blocks,點(diǎn)擊Properties 截圖說(shuō)明:
出現(xiàn)如下對(duì)話框, 在對(duì)話框中的子類SubtypeField一欄下拉選擇Res,在Subtype中設(shè)置Code和Description為0,nonres;1,res; 點(diǎn)擊確定;
截圖說(shuō)明:
4.同理設(shè)置Parcels的Properties;
5.右鍵單擊topology,點(diǎn)擊new,再點(diǎn)擊Topology:
6.在出現(xiàn)的如下對(duì)話框中點(diǎn)擊下一步
7在.出現(xiàn)的如下對(duì)話框中點(diǎn)擊下一步
8.在出現(xiàn)的New Topology如下對(duì)話框中點(diǎn)擊Select All 截圖說(shuō)明:
9.在出現(xiàn)的New Topology如下對(duì)話框中,在Enter the number of ranks中填1;
10.點(diǎn)擊下一步,在出現(xiàn)的New Topology對(duì)話框中,點(diǎn)擊Add Rule,再Add Rule中的三欄中選擇Parcels,Must Not Overlap With,Blocks,點(diǎn)擊ok; 截圖說(shuō)明:
點(diǎn)擊下一步,再點(diǎn)擊Finish.再出現(xiàn)的對(duì)話框是否拓?fù)洳樵?,點(diǎn)擊否。則在Topology中建立了topology-Topology。
11.打開ArcMap,將topology-Topology拖到ArcMap的Layers中,則在Layers中添加了topology-Topology,Blocks和Parcels; 截圖說(shuō)明:
12.點(diǎn)擊工具欄中的View,點(diǎn)擊Toolbars,再點(diǎn)擊Topology,將出現(xiàn)進(jìn)行拓?fù)洳僮鞯腡opology工具欄;在Editor下拉菜單中點(diǎn)擊Starting Editor,將工具激活;
截圖說(shuō)明:
13.點(diǎn)擊Topology工具欄的Topology Editor Tool圖標(biāo),雙擊弧線段,在結(jié)點(diǎn)處進(jìn)行操作即可
拓?fù)浣Y(jié)果圖:
第二篇:ArcGIS上機(jī)心得體會(huì)
ArcGIS上機(jī)心得體會(huì)
持續(xù)了七周的ArcGIS上機(jī)實(shí)驗(yàn)終于告一段落了!七個(gè)星期的時(shí)間說(shuō)長(zhǎng)也挺短的,可在這6個(gè)周四里(其中清明放假一次),我們卻完成了8個(gè)上機(jī)實(shí)驗(yàn),這是之前所預(yù)想不到的。俗話說(shuō)“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”,任何知識(shí)都只有通過(guò)認(rèn)真的實(shí)踐才能掌握得更好。這次的上機(jī)實(shí)驗(yàn)使我的專業(yè)素養(yǎng)得到了極大的提升,對(duì)自我的創(chuàng)新精神和實(shí)踐能力的提高起了及其重要的作用。
總體上來(lái)說(shuō),這幾次上機(jī)實(shí)驗(yàn)課是我至今的上機(jī)實(shí)驗(yàn)課中上得最為認(rèn)真,最為緊張的課!當(dāng)然原因有很多,仔細(xì)回想一下,做了一下幾點(diǎn)總結(jié):
(1)對(duì)軟件的熟悉程度不夠。雖然以前接觸過(guò)這款軟件,但操作時(shí)都是照著老師給的教程按部就班的做,沒(méi)有融入自己的思考,更沒(méi)有提出自己的看法,就只是麻木似機(jī)器般的完成著老師布置的任務(wù),效果可想而知了--十分不好。而當(dāng)我們一旦離開了教程,需要我們自己去探索去思考時(shí),我們便開始緊張了。因而速度也慢了下來(lái),效率自然也變得低下??蓳Q個(gè)角度想,老師要求嚴(yán)格又何嘗不是一件好事呢?雖然短期的效率低下,但從長(zhǎng)遠(yuǎn)的角度看,我們得到了真正的鍛煉,對(duì)這門知識(shí)的理解,掌握,消化會(huì)更深刻,更徹底。
(2)踏實(shí)才是最好的學(xué)習(xí)態(tài)度。此次的上機(jī)實(shí)驗(yàn),所用的數(shù)據(jù)很多都是環(huán)環(huán)相扣的,只要哪一步出錯(cuò),后面就無(wú)法繼續(xù)進(jìn)行下去,以至于最后得不到自己想要的結(jié)果。所以,這讓我更加深刻的認(rèn)識(shí)到了我們做任何事都不能太過(guò)于急于求成,在擺正好自己的心態(tài)前提下,我們需要踏踏實(shí)實(shí),穩(wěn)扎穩(wěn)打,才能將一件事做好。而且,在遇到問(wèn)題的時(shí)候,我們必須正視它并以積極樂(lè)觀的心態(tài)去面對(duì),相信只要自己勤動(dòng)腦,肯動(dòng)手,多探索,就沒(méi)有什么會(huì)是弄不懂的。
(3)這次上機(jī)實(shí)驗(yàn)并不是單獨(dú)的掌握好這款軟件的基本功能就能很好的完成作業(yè),還需要運(yùn)用到其他知識(shí),因此,學(xué)習(xí)知識(shí)的寬度與深度同等重要。比如:這次的上機(jī)實(shí)驗(yàn)多次用到excel表格計(jì)算,還需要進(jìn)行矩陣計(jì)算,這就是對(duì)我們其他方面知識(shí)的一個(gè)考驗(yàn)。
最后我要非常感謝能有這次上機(jī)實(shí)驗(yàn)機(jī)會(huì),更要感謝任課老師的負(fù)責(zé),讓我的各方面能力都提升了那么多!
第三篇:ARCGIS實(shí)習(xí)報(bào)告
《ArcGIS實(shí)習(xí)報(bào)告》
學(xué)
號(hào):
班級(jí)序號(hào):
姓
名:
指導(dǎo)教師:
成
績(jī):
ArcGIS軟件操作實(shí)習(xí)報(bào)告
實(shí)習(xí)目的:
通過(guò)學(xué)習(xí)Arcgis這款Gis應(yīng)用軟件熟練我們的實(shí)際應(yīng)用能力,深入理解GIS軟件應(yīng)用的核心部分,通過(guò)熟練Arcgis能掌握類似相關(guān)軟件操作,加強(qiáng)動(dòng)手能力。
實(shí)習(xí)過(guò)程:
1.對(duì)Arcgis軟件整體掌握,并與之前各類軟件操作對(duì)比和學(xué)習(xí)。
2.具體對(duì)軟件操作掌握空間數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變換、數(shù)據(jù)的可視化表達(dá)。
3.Arcgis的空間分析能力的掌握:矢量數(shù)據(jù)的空間分析、柵格數(shù)據(jù)的空間分析、三維分析、地統(tǒng)計(jì)分析、水文分析等。4.掌握Arcgis的空間分析建模。
實(shí)習(xí)內(nèi)容:
根據(jù)學(xué)習(xí)內(nèi)容,我們選擇了《地理信息系統(tǒng)分析與應(yīng)用》第三章作為實(shí)習(xí)內(nèi)容,本章內(nèi)容分別為:初識(shí)ArcGIS、農(nóng)田保護(hù)區(qū)域分析、度假村選址、屏幕矢量化及拓?fù)浣◣?kù)、投影轉(zhuǎn)換及圖形裁剪、注記及屬性編輯與連接、燕麥試驗(yàn)田選址、商店選址評(píng)價(jià)、土壤肥沃度分析、統(tǒng)計(jì)圖表、網(wǎng)絡(luò)分析、ArcGIS中DEM 的建立及應(yīng)用。
以下是實(shí)習(xí)內(nèi)容截圖
3.1 初識(shí)ArcGIS 1啟動(dòng)ArcCatalog
2.在arcmap 中加載數(shù)據(jù)
3.圖層操作
(1)放大、縮小
4、改變drelief圖層的顯示圖例
6.改變dsoils圖層的顯示圖例
3更改地圖顯示比例尺
4、將ArcCatalog 右側(cè)窗口中的Water Use 圖層拖到 ArcMap 中。
3.2農(nóng)田保護(hù)區(qū)域分析
3.2.1 問(wèn)題和數(shù)據(jù)分析
1.問(wèn)題提出
有一塊受洪水影響的地區(qū)。政府為了保護(hù)土地,決定在河流北岸建一個(gè)水壩。我們的任務(wù)是找出水壩保護(hù)的農(nóng)田范圍。
3.2.2連接并添加數(shù)據(jù)
1.連接并添加數(shù)據(jù),并改變dsoils
和
drelief 圖層的地圖符號(hào)。
3.1.5 找出洪水淹沒(méi)區(qū)域
在本例中我們需要找出所有高程低于8米的區(qū)域。利用
柵格計(jì)算器(Raster
112
3.1.6 尋找可耕種區(qū)域
3.1.7 確定水壩保護(hù)的可耕種區(qū)域
314
3設(shè)置地圖單元
516 選擇記錄 為area 字段賦值
718
2將選中區(qū)域保存為一個(gè)新圖層
920
4.122
3重分類
4查看重分類結(jié)果
324
3.3.4 確定坡度小于3%的區(qū)域
1添加圖層 2求取坡度 3圖層顯示 4統(tǒng)計(jì)坡度分布 5 取出失真坡度數(shù)據(jù) 6提取坡度小于3%的地區(qū) 7重命名
3.3.5 提取年平均溫度高于 16.5 攝氏度 的區(qū)域
526
3.4屏幕矢量化及拓?fù)浣◣?kù)
添加了控制點(diǎn)
將CropLine圖層設(shè)定為編輯狀態(tài)
數(shù)字化
728
3.5投影轉(zhuǎn)換及圖形裁剪
3.5-5 裁剪結(jié)果 CropCov
930
3.7 燕麥試驗(yàn)田選址
3.7-5 加載roads 和 hydro 特征類
3.7-28 計(jì)算地塊總價(jià)
3.8 商店選址評(píng)價(jià)
3.8-11 設(shè)置重分類邊界值
132
3.9-19 建立一個(gè)標(biāo)準(zhǔn)差圓
3.10 統(tǒng)計(jì)圖表
3.10-8 趨勢(shì)線
334
3.12 ArcGIS 中 DEM 的建立及應(yīng)用
3.12-4 離散點(diǎn)生成的DEM
3.12-12 離散點(diǎn)生成TIN
536
3.12-31 坡度圖
3.12-34 曲率圖
3.12-37 坡向圖
738
3.12-45 可視域圖
3.12-49 統(tǒng)計(jì)計(jì)算結(jié)果
940
實(shí)習(xí)心得體會(huì)
在這次軟件操作實(shí)習(xí)中,我們按照課本的指導(dǎo),親自體驗(yàn)了如何用ArcGIS實(shí)現(xiàn)數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變換、數(shù)據(jù)的可視化表達(dá)??臻g分析能力、矢量數(shù)據(jù)的空間分析、柵格數(shù)據(jù)的空間分析、三維分析、地理統(tǒng)計(jì)分析、水文分析等。
在一個(gè)個(gè)案例與任務(wù)中。我們熟悉了軟件的操作,軟件可以實(shí)現(xiàn)的功能,了解到了gis可以幫助我們解決生活中哪些方面的問(wèn)題。這使課堂理論與實(shí)際緊密聯(lián)系,幫助我們更好地理解了GIS知識(shí)。在軟件的使用過(guò)程中,我們訓(xùn)練了自己解決實(shí)際工程任務(wù)的能力,提高了專業(yè)技能。這對(duì)將來(lái)走上工作崗位也有很大的幫助。此外,通過(guò)實(shí)際操作,書本的知識(shí)不再枯燥乏味。在制作一幅又一副功能各異的圖片,完成書本要求的內(nèi)容中。我們收獲了成功的喜悅,驚嘆于GIS的強(qiáng)大功能,這使我們對(duì)GIS更加感興趣。
地理信息系統(tǒng)為測(cè)繪人員提供了一個(gè)一體化工具,使我們可以將各種格式和來(lái)源的數(shù)據(jù)整合在一起,進(jìn)行維護(hù)和管理、使用動(dòng)態(tài)地圖來(lái)可視化數(shù)據(jù)、關(guān)聯(lián)信息。這不僅讓我們更好的管理和分配資源,還可以進(jìn)行建模和分析工作,使原始數(shù)據(jù)產(chǎn)生更為廣闊的價(jià)值。因此要成為一名優(yōu)秀的測(cè)繪工作者,除了要熟練操作儀器,掌握各類工程測(cè)量的方法外,還應(yīng)該將熟練運(yùn)用常見的GIS軟件,借助GIS的強(qiáng)大功能為我們的工作、生活創(chuàng)造更多的幸福。
中國(guó)地質(zhì)大學(xué)信息工程學(xué)院
2011年 12 月28日
1-41
第四篇:ARCGIS 實(shí)習(xí)報(bào)告
Arcgis 實(shí)習(xí)
第 二 次 實(shí)習(xí)報(bào) 告
班級(jí):地信121 姓名:聞元武 學(xué)號(hào):201201694 空間數(shù)據(jù)管理及屬性編輯
一. 實(shí)驗(yàn)?zāi)康?/p>
1.利用ArcCatalog管理地理空間數(shù)據(jù)庫(kù),理解personal Geodatabase空間數(shù)據(jù)庫(kù)模型有關(guān)概念。2.掌握在ArcMap中編輯屬性數(shù)據(jù)的基本操作。3.掌握根據(jù)GPS數(shù)據(jù)文件生成適量圖層的方法和過(guò)程。4.理解圖層屬性表間的連接(join)或關(guān)聯(lián)(Link)關(guān)系。二. 實(shí)驗(yàn)要求
1.闡述基本原理和概念(要素類,要素?cái)?shù)據(jù)集)。2.Geodatabase空間數(shù)據(jù)庫(kù)模型的特點(diǎn)。
3.1:M 空間查詢的實(shí)現(xiàn)原理及應(yīng)用實(shí)例。比較連接(Join)和關(guān)聯(lián)(Link)關(guān)系的區(qū)別和應(yīng)用。三. 實(shí)驗(yàn)內(nèi)容
1.啟動(dòng) ArcCatalog 打開一個(gè)地理數(shù)據(jù)庫(kù) 1.1當(dāng)ArcCatlog打開后,連接到指定文件夾Exec2.1.2 打開個(gè)人空間數(shù)據(jù)庫(kù)——National,mdb??梢钥吹皆贜ational,mdb中包含有2個(gè)要素?cái)?shù)據(jù)集,一個(gè)關(guān)系類和一個(gè)屬性表。
2.預(yù)覽地理數(shù)據(jù)庫(kù)中的要素類
2.1 ArcCatlog窗口右邊的數(shù)據(jù)顯示區(qū)內(nèi),點(diǎn)擊“預(yù)覽”選項(xiàng)切換到預(yù)覽視圖界面。在目錄樹中,雙擊數(shù)據(jù)集要素集- WorldContainer,點(diǎn)擊要素類-Container94激活它。
2.2 在2.1窗口的下方,預(yù)覽下拉列表中選擇“表格”,現(xiàn)在你可以看到 Countries94 的屬性表。查看它的屬性字段信息。
2.3 在目錄樹下面,選擇WorldCities。查看他的屬性信息。
3.創(chuàng)建縮圖,并查看元數(shù)據(jù) 3.1 在目錄樹中,選擇地理數(shù)據(jù)庫(kù)National中的要素類-Countries94,切換到“預(yù)覽”視圖,點(diǎn)擊工具欄上的“放大鏡”按鈕,將圖層放大到一定區(qū)域,然后再點(diǎn)生成并更新縮略圖。這時(shí),切換到“內(nèi)容”視圖界面下,并在目錄樹中選擇要素集——WorldContainer數(shù)據(jù)查看方式更改為縮略圖方式。注意此時(shí),要素類的縮圖圖是不是發(fā)生了改變??s略圖已經(jīng)不是原來(lái)的縮略圖,而是放大之后的圖片。
3.2 點(diǎn)擊“元數(shù)據(jù)”選項(xiàng)頁(yè),查看當(dāng)前要素類的元數(shù)據(jù),了解當(dāng)前要素類是采用什么坐標(biāo)系,都有哪些屬性字段,字段的類型等信息。在元數(shù)據(jù)工具欄中,從樣式表中選擇不同的樣式,可以看到,元數(shù)據(jù)顯示的格式發(fā)生了變化。4.創(chuàng)建個(gè)人地理數(shù)據(jù)庫(kù)(Personal Geodatabase-PGD)4.1 創(chuàng)建個(gè)人地理數(shù)據(jù)庫(kù)(Personal Geodatabase-PGD)。
4.2 在ArcCatalog的目錄樹中,定位到D:盤,右鍵點(diǎn)擊這
D:盤,在出現(xiàn)的菜單中,選擇[新建]>>[文件夾],文件夾名稱改為 “myGeoDB”。右鍵選中這個(gè)文件夾,在出現(xiàn)的菜單中,點(diǎn)擊[新建]>>[個(gè)人地理數(shù)據(jù)庫(kù)],這會(huì)創(chuàng)建一個(gè)名稱為:“新建個(gè)人地理數(shù)據(jù)庫(kù)” 的數(shù)據(jù)庫(kù)文件,將之改名為“YN.mdb”。
4.3 右鍵點(diǎn)擊數(shù)據(jù)庫(kù)文件“YN.mdb”,在出現(xiàn)的菜單中,選擇[導(dǎo)入]>>[要素類multiple],在出現(xiàn)的對(duì)話框中,打開要導(dǎo)入要素:縣界 prj.shp/縣城 prj.shp/道路 prj.shp(這些文件在 Exece2 文件夾下,按住Shift鍵并點(diǎn)擊鼠標(biāo)可同時(shí)選擇多個(gè) Shape文件)。
4.4 右鍵點(diǎn)擊數(shù)據(jù)庫(kù)文件“YN.mdb”,新建【要素集】,并圍棋指定坐標(biāo)系。
4.5 右鍵點(diǎn)擊新建的要素集-KM,在出現(xiàn)的菜單中選擇[新建]>>[要素類],在出現(xiàn)的對(duì)話框中輸入要素類的名稱-公交站點(diǎn),點(diǎn)擊<下一步>,再次點(diǎn)擊<下一步>按鈕。在出現(xiàn)的對(duì)話框中選擇字段,修改字段的幾何類型為“點(diǎn)”(表示此要素類中將要存儲(chǔ)的要素類型是點(diǎn)要素,準(zhǔn)備用來(lái)存儲(chǔ)公交站點(diǎn)),點(diǎn)擊下一步,我們添加兩個(gè)字段“站點(diǎn)名稱”,“公交站點(diǎn)編號(hào)”數(shù)據(jù)類型都設(shè)置成“文本”,點(diǎn)擊“完成”按鈕。
4.6 新建數(shù)據(jù)表:右鍵點(diǎn)擊地理數(shù)據(jù)庫(kù)-YN.mdb,在出現(xiàn)的菜單中,選擇[新建]>>[表],輸入“表”名稱為“公交線路”,點(diǎn)<下一步>,再次點(diǎn)<下一步>,在對(duì)話框中,新添加兩個(gè)字段
公交站點(diǎn)編號(hào)、公交線路(數(shù)據(jù)類型都設(shè)為“文本”),點(diǎn)擊“完成”。
4.7 創(chuàng)建公交站點(diǎn)到公交線路一對(duì)多的關(guān)系(1:M):右鍵選擇地理數(shù)據(jù)庫(kù)-YN.mdb,在出現(xiàn)的菜單中選擇<新建>-<關(guān)系類>,對(duì)以下內(nèi)容進(jìn)行設(shè)定,其它設(shè)置接受默認(rèn)選項(xiàng)。選擇關(guān)系類型為一對(duì)多關(guān)系,這樣可以建立公交站點(diǎn)到公交線路一對(duì)多的關(guān)系,因?yàn)榻?jīng)過(guò)一個(gè)公交站點(diǎn)的公交線路有多條,這樣,在我們從公交站點(diǎn)分布圖是查詢某個(gè)公交站點(diǎn)時(shí)就可以查詢經(jīng)過(guò)這個(gè)站點(diǎn)所有公交線。
4.8 完成以上步驟后,在ArcCatlog中就可以看到,在地理數(shù)據(jù)庫(kù)YN.mdb中,有一個(gè)有一個(gè)要素集(NewKM),其中包含一個(gè)要素類(公交站點(diǎn))、一個(gè)數(shù)據(jù)表(公交線路)、一個(gè)關(guān)系類(公交線及公交站 1:M)
5.拖放數(shù)據(jù)到 ArcMap 中
5.1 啟動(dòng)ArcMap,新建一個(gè)空的地圖文檔,通過(guò)拖放的方式添加上面所創(chuàng)建的數(shù)據(jù)到ArcMap 中。在ArcCatalog中,點(diǎn)擊“內(nèi)容”選項(xiàng)頁(yè),在目錄樹中,點(diǎn)擊地理數(shù)據(jù)庫(kù)-YN.mdb,將要素類-“公交站點(diǎn)”及屬性數(shù)據(jù)表“公交線路”拖放到ArcMap中。
6.編輯屬性數(shù)據(jù)及進(jìn)行 1:M的空間查詢 編輯公交站點(diǎn),及公交路線。
7.導(dǎo)入 GPS 數(shù)據(jù),生成圖層
7.1 啟動(dòng) ArcMap,切換到數(shù)據(jù)源視圖。添加 GPS 數(shù)據(jù),選擇GPS.txt。
7.2 執(zhí)行菜單命令:[工具] >>[添加X(jué)Y 數(shù)據(jù)],在XY 數(shù)據(jù)”窗口中,選擇已添加的 XY數(shù)據(jù)表,指定X坐標(biāo)字段(東經(jīng))和Y 坐標(biāo)字段(北緯),按 GPS 系統(tǒng)采用的坐標(biāo)系統(tǒng)為WGS_1984。確定后,在地圖顯示區(qū)域中,就會(huì)根據(jù)GPS 數(shù)據(jù)文件中采集的坐標(biāo)信息創(chuàng)建點(diǎn)狀的事件圖層。
7.3 在圖層控制面板(TOC)中,右鍵選中根據(jù)GPS 數(shù)據(jù)文件生成的事件圖層。在出現(xiàn)的菜單中,執(zhí)行[數(shù)據(jù)]>>[導(dǎo)出數(shù)據(jù)]命令,在導(dǎo)出數(shù)據(jù)對(duì)話框中,指定要導(dǎo)出的文件名稱及存儲(chǔ)位置。這樣就完成了由GPS 數(shù)據(jù)文件生成圖層的過(guò)程。
四. 實(shí)驗(yàn)總結(jié)
4.1 通過(guò)本次實(shí)習(xí),我加深了對(duì)要素類概念的理解,要素類就是指具有相同的幾何特征的要素集合,比如我們這里的道路的要素類,縣城的要素類等。
4.2 通過(guò)本次實(shí)習(xí),我還知道要素?cái)?shù)據(jù)集就是一個(gè)集合,在這個(gè)集合里面,所有的要素類都具有相同的坐標(biāo)系統(tǒng)。
4.3 Geodatabase 空間數(shù)據(jù)庫(kù)模型的特點(diǎn):Geodatabase在要素類和數(shù)據(jù)集中對(duì)空間參考信息進(jìn)行了完整的定義。而且,Geodatabase空間幾何數(shù)據(jù)與屬性數(shù)據(jù)保存在同一個(gè)同一個(gè)要素類中。
4.4 1:M 空間查詢的實(shí)現(xiàn)原理及應(yīng)用實(shí)例:將兩個(gè)屬性表關(guān)聯(lián)起來(lái),其中一個(gè)屬性表中的某一記錄與另一屬性表中多個(gè)記錄相關(guān)聯(lián),當(dāng)查詢某一條記錄時(shí)就可以查詢到與其相關(guān)聯(lián)的其他屬性。如實(shí)驗(yàn)二中,當(dāng)查詢某一公交站點(diǎn)時(shí),可以將通過(guò)此站點(diǎn)的公交路線都顯示出來(lái),就屬于1:M空間查詢。4.5 比較連接(Join)和關(guān)聯(lián)(Link)關(guān)系的區(qū)別和應(yīng)用: 區(qū)別:
連接:連接可以添加額外的屬性數(shù)據(jù)到到當(dāng)前圖層,也可以使用這些額外的屬性數(shù)據(jù)進(jìn)行標(biāo)注。關(guān)聯(lián):關(guān)聯(lián)可以使數(shù)據(jù)關(guān)聯(lián)到當(dāng)前圖層關(guān)聯(lián)的數(shù)據(jù)并不像連接那樣添加到圖層的屬性表中,而是在處理圖層的屬性數(shù)據(jù)的時(shí)候可以獲取關(guān)聯(lián)的數(shù)據(jù)。
應(yīng)用:
連接:生成虛擬連接(并不修改數(shù)據(jù)源)虛擬表,適用:一對(duì)多,多對(duì)一。關(guān)聯(lián):在表A中選擇一個(gè)記錄,可以關(guān)聯(lián)并同時(shí)選擇表中多條記錄,適用:一對(duì)多。
第五篇:linux上機(jī)實(shí)習(xí)報(bào)告
目 錄
Linux 第一次上機(jī)(運(yùn)行環(huán)境RedHat)................................................................................1 調(diào)試運(yùn)行CD唱片應(yīng)用程序.......................................................................................1 運(yùn)行過(guò)程............................................................................................................1 心得體會(huì)............................................................................................................3 編寫shell腳本,求1到100的和..............................................................................3 運(yùn)行過(guò)程............................................................................................................3 源代碼...............................................................................................................4 編寫shell腳本,從鍵盤輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的和.................................................4 運(yùn)行過(guò)程............................................................................................................4 源代碼...............................................................................................................5 等待特定用戶登錄,每30秒確認(rèn)一次.......................................................................5 運(yùn)行過(guò)程............................................................................................................5 源代碼...............................................................................................................6 找出系統(tǒng)中當(dāng)前消耗磁盤容量最大的前10個(gè)用戶,并向他們發(fā)送警告郵件...............6 運(yùn)行過(guò)程............................................................................................................6 源代碼...............................................................................................................8 查找輸入文件的路徑.................................................................................................8 運(yùn)行過(guò)程............................................................................................................8 源代碼...............................................................................................................9 Linux 第二次上機(jī)(運(yùn)行環(huán)境RedHat)................................................................................9 定制自己的ls命令。提供至少三種帶參數(shù)的執(zhí)行方式................................................9 運(yùn)行過(guò)程............................................................................................................9 源代碼..............................................................................................................11 調(diào)試編譯串行口通信程序p6.5.c...............................................................................16 運(yùn)行過(guò)程..........................................................................................................16 Linux 第三次上機(jī)(運(yùn)行環(huán)境RedHat,CentOS)...............................................................16 創(chuàng)建一個(gè)系統(tǒng)監(jiān)聽守護(hù)進(jìn)程,一旦接收到其他進(jìn)程發(fā)來(lái)的信號(hào),馬上給出報(bào)告........16 運(yùn)行過(guò)程..........................................................................................................16 源代碼.............................................................................................................18 分別利用本地socket套接字和INTENET套接字實(shí)現(xiàn)進(jìn)程間文件傳輸......................20 本地socket套接字運(yùn)行過(guò)程.............................................................................20 本地socket套接字服務(wù)器server1.c源代碼........................................................22 本地socket套接字客戶端client1.c源代碼.........................................................23 INTENET套接字運(yùn)行過(guò)程...............................................................................25 INTENET套接字服務(wù)器server2.c源代碼..........................................................28 INTENET套接字客戶端client2.c源代碼...........................................................29 感謝與收獲....................................................................................................................30
Linux 第一次上機(jī)(運(yùn)行環(huán)境RedHat)調(diào)試運(yùn)行CD唱片應(yīng)用程序 運(yùn)行過(guò)程
圖表 1第一步,使用./CD 命令運(yùn)行CD腳本
圖表 2進(jìn)入選項(xiàng)界面
圖表 3增加CD
圖表 4查找CD
圖表 5查詢數(shù)目
圖表 6退出
心得體會(huì)
通過(guò)運(yùn)行書上的CD唱片應(yīng)用程序,進(jìn)一步地了解到shell編程的方法,以及編寫程序的思路。
編寫shell腳本,求1到100的和 運(yùn)行過(guò)程
圖表 7使用./sum1to100運(yùn)行
源代碼
圖表 8使用cat sum1to100查看源代碼
編寫shell腳本,從鍵盤輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的和
運(yùn)行過(guò)程
圖表 9使用./sumAandB 運(yùn)行
源代碼
圖表 10使用cat sumAandB查看源代碼
等待特定用戶登錄,每30秒確認(rèn)一次 運(yùn)行過(guò)程
已知特定用戶是zzx,我首先讓root用戶登錄并運(yùn)行程序,可以發(fā)現(xiàn)每隔30s提醒一次
圖表 11使用./checkuser運(yùn)行
當(dāng)我切換到zzx用戶,并再次運(yùn)行程序,可得如下結(jié)果
源代碼
圖表 12使用cat checkuser查看代碼
找出系統(tǒng)中當(dāng)前消耗磁盤容量最大的前10個(gè)用戶,并向他們發(fā)送警告郵件 運(yùn)行過(guò)程
由于權(quán)限等問(wèn)題,我們使用root用戶運(yùn)行程序
圖表 13使用./mymail運(yùn)行
運(yùn)行完畢后,我們就可以查看郵件了
圖表 14 root用戶收到的郵件
圖表 15 zzx用戶收到的郵件
圖表 16 t1用戶收到的郵件
源代碼
圖表 17 使用cat命令查看
查找輸入文件的路徑 運(yùn)行過(guò)程
由于權(quán)限的問(wèn)題,我們使用root用戶運(yùn)行程序
圖表 18 使用./route運(yùn)行,并按照要求輸入文件名
源代碼
圖表 19 使用cat route查看源代碼
Linux 第二次上機(jī)(運(yùn)行環(huán)境RedHat)定制自己的ls命令。提供至少三種帶參數(shù)的執(zhí)行方式 運(yùn)行過(guò)程
圖表 20 使用./ls 運(yùn)行不帶參數(shù)ls
圖表 21使用./ls-l 運(yùn)行帶參數(shù)-l 的ls
圖表 22 使用./ls-a運(yùn)行帶參數(shù)-a的ls
圖表 23使用./ls-al 運(yùn)行帶參數(shù)-al的ls 源代碼
#include #include int do_ls(char *dir,char *filename,int lflag){ int n;struct stat buf;char out[100];struct passwd *pw; struct group *gr;struct tm *t;if(lflag == 0){ } { } return 0; printf(“%st”,filename);if(lstat(dir,&buf)<0)fprintf(stderr,“stat error:%sn”,strerror(errno));return-1;switch(buf.st_mode & S_IFMT){ case S_IFREG: printf(“-”);break;case S_IFDIR: printf(“d”);break;case S_IFCHR: printf(“c”);break;case S_IFBLK: printf(“b”);break;case S_IFIFO: printf(“p”);break;case S_IFLNK: printf(“l(fā)”);break; case S_IFSOCK: printf(“s”);} for(n=8;n>=0;n--){ if(buf.st_mode&(1< break; } } else { } { case 2: printf(“r”);break;case 1: printf(“w”);break;case 0: printf(“x”);break;default: break;} printf(“-”);printf(“ %d”,buf.st_nlink); pw = getpwuid(buf.st_uid);printf(“ %s”,pw->pw_name);gr = getgrgid(buf.st_gid);printf(“ %s”,gr->gr_name);printf(“ %ld”,buf.st_size);t = localtime(&buf.st_atime);printf(“ %d-%d-%d %d:%d” ,t->tm_year+1900 ,t->tm_mon+1 ,t->tm_mday ,t->tm_hour ,t->tm_min); printf(“ %s ”,filename); if(S_ISLNK(buf.st_mode)){ printf(“-> ”);if(readlink(filename,out,100)==-1){ } //printf(“readlink errorn”); } printf(“%s”,out);} printf(“n”);return 0;int ls_prepare(char *w,int aflag,int lflag){ struct stat buf;char name[100];DIR *dir; struct dirent *pdr;if(lstat(w,&buf)<0){ fprintf(stderr,“stat error:%sn”,strerror(errno));return-1;} if(S_ISDIR(buf.st_mode)){ dir = opendir(w);{ } closedir(dir); while((pdr = readdir(dir))!=NULL)if(aflag==0){ if(pdr->d_name[0]=='.') continue;memset(name,0,100); strcpy(name,w); strcat(name,“/”); strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}else { } memset(name,0,100);strcpy(name,w);strcat(name,“/”);strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}else { do_ls(w,w,lflag); } { } } return 0;int main(int argc,char **argv)int aflag =0;int lflag =0;char c;int i;while((c = getopt(argc,argv,“al”))!=-1){ } switch(c){ case 'a': aflag =1;break;case 'l': lflag =1;break;default: break;} if(argc == optind){ ls_prepare(“./”,aflag,lflag);} else { } for(i=optind;i 調(diào)試編譯串行口通信程序p6.5.c 運(yùn)行過(guò)程 由于權(quán)限問(wèn)題,我們?cè)趓oot用戶下運(yùn)行程序 圖表 24 使用./mytrunk不帶參數(shù)運(yùn)行 圖表 25使用./mytrunk /dev/ttyS0 0帶參數(shù)運(yùn)行 Linux 第三次上機(jī)(運(yùn)行環(huán)境RedHat,CentOS)創(chuàng)建一個(gè)系統(tǒng)監(jiān)聽守護(hù)進(jìn)程,一旦接收到其他進(jìn)程發(fā)來(lái)的信號(hào),馬上給出報(bào)告 運(yùn)行過(guò)程 圖表 26首先運(yùn)行守護(hù)進(jìn)程之后查看 當(dāng)前進(jìn)程 圖表 27可以發(fā)現(xiàn)守護(hù)進(jìn)程-jincheng在后臺(tái)運(yùn)行,且 PPID=1,PID=4085 圖表 28可以發(fā)現(xiàn)守護(hù)進(jìn)程向test.txt發(fā)送了start 圖表 29向守護(hù)進(jìn)程發(fā)送終止信號(hào),終止守護(hù)進(jìn)程 圖表 30可以發(fā)現(xiàn)后臺(tái)運(yùn)行的守護(hù)進(jìn)程沒(méi)了 圖表 31可以發(fā)現(xiàn)守護(hù)進(jìn)程又向test.txt發(fā)送了end 圖表 32具體查看test.txt 圖表 33具體查看test.txt的內(nèi)容 源代碼 #include if(sig==SIGTERM){ write(fd1,“endn”,5);exit(0);} } int daemon(int nochdir, int noclose){ pid_t pid; pid = fork(); /* In case of fork is error.*/ if(pid < 0) { perror(“fork”); return-1; } /* In case of this is parent process.*/ if(pid!= 0) exit(0); /* Become session leader and get pid.*/ pid = setsid(); if(pid <-1) { perror(“setsid”); return-1; } /* Change directory to root.*/ if(!nochdir) chdir(“/”); /* File descriptor close.*/ if(!noclose) { int fd; fd = open(“/dev/null”, O_RDWR, 0); if(fd!=-1) { dup2(fd, STDIN_FILENO); } dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); if(fd > 2) close(fd); } umask(0027); return 0; } int main(void){ fd1=open(“test.txt”,O_RDWR | O_TRUNC); } write(fd1,“startn”,7);daemon(0,0);signal(SIGTERM,sigintHandler);sleep(1000);return 0; 分別利用本地socket套接字和INTENET套接字實(shí)現(xiàn)進(jìn)程間文件傳輸 本地socket套接字運(yùn)行過(guò)程 圖表 34使用./server1運(yùn)行服務(wù)器,顯示服務(wù)器等待狀態(tài) 圖表 35當(dāng)在另外一個(gè)終端運(yùn)行客戶端程序時(shí),服務(wù)器顯示客戶連接,并要求輸入傳輸文件名稱 圖表 36當(dāng)服務(wù)器輸入文件名稱server1.c后客戶端顯示接收信息,不過(guò)接收到的文件重定向到 test.txt中 圖表 37 server1.c的內(nèi)容 圖表 38 客戶端接收到顯示在test.txt的內(nèi)容,和server1.c的內(nèi)容比較,完全一致 本地socket套接字服務(wù)器server1.c源代碼 #include int filefd,n;//////////////// char file[100],buf[1024];//////////////// int server_sockfd,client_sockfd; int server_len,client_len; struct sockaddr_un server_address; struct sockaddr_un client_address; unlink(“server_socket”); server_sockfd =socket(AF_UNIX,SOCK_STREAM,0); server_address.sun_family =AF_UNIX; strcpy(server_address.sun_path,“server_socket”); server_len =sizeof(server_address); bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5); while(1) { printf(“server waitingn”); client_len =sizeof(client_address); client_sockfd=accept(server_sockfd,(struct *)&client_address,&client_len); if(client_sockfd!=-1) { printf(“you have a client ,please put the filename to transport!n”); scanf(“%s”,file); if((filefd=open(file,O_RDWR))<0) { perror(“can't find the file”); exit(1); } printf(“filefd= %dn”,filefd); printf(“the file is transported ,please wait...n”); lseek(filefd,0L,0);//每次接受客戶機(jī)連接,應(yīng)將用于讀的源文件指針移到文件頭 write(client_sockfd,file,sizeof(file));//傳送文件名 if((n=read(filefd,buf,sizeof(buf)))>0) { } write(client_sockfd,buf,n); sockaddr printf(“you have transport %d bytes and it is end!n”,n); close(client_sockfd); } close(filefd); } } 本地socket套接字客戶端client1.c源代碼 #include #include int filefd,n,oldfilefd;///////////////// char file[100],buf[1024]; int sockfd; int len; struct sockaddr_un address; int result; sockfd =socket(AF_UNIX, SOCK_STREAM,0); address.sun_family =AF_UNIX; strcpy(address.sun_path,“server_socket”); len=sizeof(address); result=connect(sockfd,(struct sockaddr *)&address,len); if(result ==-1) { perror(“oops:client1”); exit(1); } if(result!=-1) { oldfilefd=open(“test.txt”,O_RDWR); filefd=dup(oldfilefd); read(sockfd,file,sizeof(file)); printf(“the filename you receive is:%sn”,file); if((n=read(sockfd,buf,sizeof(buf)))>0) { write(filefd,buf,n); } printf(“you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!n”,n); close(sockfd); } close(filefd); exit(0);} INTENET套接字運(yùn)行過(guò)程 圖表 39使用./server2運(yùn)行服務(wù)器,顯示服務(wù)器等待狀態(tài) 圖表 40當(dāng)在另外一個(gè)終端運(yùn)行客戶端程序時(shí),服務(wù)器顯示客戶連接,并要求輸入傳輸文件名稱 圖表 41當(dāng)服務(wù)器輸入文件名稱server2.c后客戶端顯示接收信息,不過(guò)接收到的文件重定向到 test.txt中 圖表 42 server2.c的內(nèi)容 圖表 43客戶端接收到顯示在test.txt的內(nèi)容,和server2.c的內(nèi)容比較,完全一致 INTENET套接字服務(wù)器server2.c源代碼 #include int main(){ int filefd,n;//////////////// char file[100],buf[4096];/////////////////// int server_sockfd,client_sockfd; int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd =socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=inet_addr(“127.0.0.1”);server_address.sin_port =9734;server_len=sizeof(server_address);bind(server_sockfd,(struct sockaddr *)&server_address,server_len);listen(server_sockfd,5);while(1) { printf(“server waitingn”); client_len =sizeof(client_address); client_sockfd=accept(server_sockfd,(struct *)&client_address,&client_len); if(client_sockfd!=-1) { printf(“you have a client ,please put the filename to transport!n”);scanf(“%s”,file); if((filefd=open(file,O_RDWR))<0){ sockaddr perror(“can't find the file”); exit(1); } printf(“filefd= %dn”,filefd); printf(“the file is transported ,please wait...n”); lseek(filefd,0L,0);//每次接受客戶機(jī)連接,應(yīng)將用于讀的源>文件指針移到文件頭 write(client_sockfd,file,sizeof(file));//傳送文件名 if((n=read(filefd,buf,sizeof(buf)))>0) { write(client_sockfd,buf,n); } printf(“you have transport %d bytes and it is end!n”,n); close(client_sockfd); } close(filefd); } } INTENET套接字客戶端client2.c源代碼 #include int main(){ int filefd,n,oldfilefd;//////////////////// char file[100],buf[4096];int sockfd;int len;struct sockaddr_in address;int result;sockfd =socket(AF_INET,SOCK_STREAM,0);address.sin_family =AF_INET;address.sin_addr.s_addr =inet_addr(“127.0.0.1”);address.sin_port =9734;len =sizeof(address); result=connect(sockfd,(struct sockaddr *)&address,len); if(result ==-1) { perror(“oops:client2”); exit(1); } if(result!=-1){ oldfilefd=open(“test.txt”,O_RDWR); filefd=dup(oldfilefd); read(sockfd,file,sizeof(file)); printf(“the filename you receive is:%sn”,file); if((n=read(sockfd,buf,sizeof(buf)))>0) { write(filefd,buf,n); } printf(“you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!n”,n); close(sockfd);} close(filefd); exit(0);} 感謝與收獲 通過(guò)這幾次上機(jī)實(shí)習(xí),使我更加扎實(shí)的掌握了有關(guān)Linux C編程方面的知識(shí),在設(shè)計(jì)過(guò)程中雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過(guò)編程,使我們掌握的知識(shí)不再是紙上談兵。 過(guò)而能改,善莫大焉。在課程設(shè)計(jì)過(guò)程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過(guò)而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問(wèn)題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,一定要不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上披荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可! 實(shí)踐課誠(chéng)然是一門專業(yè)課,給我很多專業(yè)知識(shí)以及專業(yè)技能上的提升,同時(shí)又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時(shí),設(shè)計(jì)讓我感觸很深。使我對(duì)抽象的理論有了具體的認(rèn)識(shí)。 我認(rèn)為,在這學(xué)期的課程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種 其它能力上也都有了提高。更重要的是,在課程設(shè)計(jì)上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來(lái)也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂(lè),找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國(guó)提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的事情。 回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說(shuō)得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,但可喜的是最終都得到了解決。