基于GIS的學(xué)校選址分析_第1頁
基于GIS的學(xué)校選址分析_第2頁
基于GIS的學(xué)校選址分析_第3頁
基于GIS的學(xué)校選址分析_第4頁
基于GIS的學(xué)校選址分析_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、河北聯(lián)合大學(xué) 城市地理信息系統(tǒng)設(shè)計PAGE 礦業(yè)工程學(xué)院 河 北 聯(lián) 合 大 學(xué)城市地理信息系統(tǒng)設(shè)計課程題目:基于GIS的學(xué)校選址分析姓 名: 學(xué) 號: 2011144301專 業(yè): 地理信息系統(tǒng)班 級: 11地信1班指導(dǎo)老師: 閆 順 璽礦業(yè)工程學(xué)院2014年 5月 20 日 TOC o 1-3 u 目錄 TOC o 1-3 u 1.搜集資料 PAGEREF _Toc388561904 h 32.引言 PAGEREF _Toc388561905 h 33.項目概述 PAGEREF _Toc388561906 h 43.1項目背景 PAGEREF _Toc388561907 h 43.12用到

2、的軟件 PAGEREF _Toc388561908 h 43.2學(xué)校選址的調(diào)查與分析 PAGEREF _Toc388561909 h 53.2.1背景條件 PAGEREF _Toc388561910 h 53.2.2學(xué)校選址要求 PAGEREF _Toc388561911 h 53.2.3數(shù)據(jù)準(zhǔn)備和處理 PAGEREF _Toc388561912 h 63.3適宜性評價模型構(gòu)建和分析思路 PAGEREF _Toc388561913 h 64 具體操作步驟 PAGEREF _Toc388561914 h 74.1設(shè)置空間分析環(huán)境 PAGEREF _Toc388561915 h 74.2數(shù)據(jù)提取

3、PAGEREF _Toc388561916 h 94.3重分類數(shù)據(jù)集 PAGEREF _Toc388561917 h 114.3.1 重分類坡度數(shù)據(jù)集 PAGEREF _Toc388561918 h 114.3.2重分類娛樂場直線距離數(shù)據(jù)集 PAGEREF _Toc388561919 h 114.3.3 重分類現(xiàn)有學(xué)校直線距離數(shù)據(jù)集 PAGEREF _Toc388561920 h 124.3.4重分類土地利用數(shù)據(jù)集 PAGEREF _Toc388561921 h 135適宜區(qū)分析 PAGEREF _Toc388561922 h 146結(jié)束語 PAGEREF _Toc388561923 h 15

4、參考文獻(xiàn) PAGEREF _Toc388561924 h 161.搜集資料(1)娛樂場所:點,區(qū)域內(nèi)的娛樂場所。(2)學(xué)校:點,區(qū)域內(nèi)收集到的學(xué)校位置信息。(3)土地利用類型:面,包括不同的土地類型。(4)地面高程數(shù)據(jù):面,地面的不同高程,都是由面狀要素體現(xiàn)。 2.引言地理信息系統(tǒng) (Geographic Information System,簡稱GIS)是以計算機(jī)為核心的信息處理技術(shù),在國民經(jīng)濟(jì)建設(shè)中得到了廣泛應(yīng)用,極大地推動了社會生產(chǎn)力的發(fā)展,GIS成為世界各國激烈競爭的高科技熱點之一。GIS是計算機(jī)科學(xué)、地理學(xué)、測量學(xué)、地圖學(xué)等多門學(xué)科綜合的邊緣學(xué)科,其核心是計算機(jī)科學(xué),基本技術(shù)是數(shù)據(jù)庫

5、、地圖可視化及空間分析,GIS是處理地理數(shù)據(jù)的輸入、輸出、管理、查詢、分析和輔助決策的計算機(jī)系統(tǒng)。地理信息空間分析技術(shù)在公園選址與規(guī)劃中的應(yīng)用,體現(xiàn)出其眾多的優(yōu)點和巨大的潛力,保證了公園選址與規(guī)劃的準(zhǔn)確性和精確性。地理信息系統(tǒng)是現(xiàn)代信息社會的產(chǎn)物。由于計算機(jī)技術(shù)與網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,數(shù)字地球、數(shù)字城市等概念的相繼提出,空間信息技術(shù)的應(yīng)用范圍得到了極大地拓展,開始由資源環(huán)境領(lǐng)域向社會經(jīng)濟(jì)領(lǐng)域和商業(yè)領(lǐng)域轉(zhuǎn)變。在這種情況下,傳統(tǒng)的GIS技術(shù)與相關(guān)前沿的IT技術(shù)相融合,在強(qiáng)調(diào)和拓展空間信息服務(wù)的基礎(chǔ)上,逐步演變?yōu)榛谖恢玫姆?wù),并成為近兩年國內(nèi)外空問信息技術(shù)和應(yīng)用研究的熱點和前沿。3.項目概述3.1項

6、目背景改革開放以來,城市化迅速發(fā)展。中小城市逐步崛起,人口也漸漸向城市遷移,各行各業(yè)也隨著發(fā)展的需求慢慢出現(xiàn)。教育業(yè)是其中必不可缺的,學(xué)生是祖國的未來,是國家的希望,越來越多的家長開始注重孩子的科學(xué)文化知識的教育,選擇一所好的學(xué)校也一直是家長們頭疼的問題。除了學(xué)校的質(zhì)量,家長們也會很大方面的考慮到學(xué)校的地理位置以及周邊環(huán)境等問題,所以對于學(xué)校方面,一個合適的學(xué)校地理位置很重要。在條件有限的情況下,新建合適的學(xué)校,以解決教育資源短缺的問題,保障學(xué)生的受教育問題,校址的合理選擇具有決定性的作用。選擇校址時要考慮盡可能覆蓋更多小區(qū),方便學(xué)生上學(xué),保證每個學(xué)生有學(xué)校上,同時也要考慮學(xué)校的地理位置、周邊

7、環(huán)境、與現(xiàn)有學(xué)校的距離因素等因素,從總體上把握這些因素能夠確定出適宜性比較好的學(xué)校選址區(qū)。合理的學(xué)??臻g位置布局,有利于學(xué)生的上課與生活。3.12用到的軟件基于GIS 的中學(xué)選址問題,所使用的軟件為ESRI公司的Arcgis軟件。ArcGIS是由ESRI出品的一個地理信息系統(tǒng)系列軟件的總稱。地理信息系統(tǒng)的大容量、高效率及其結(jié)合的相關(guān)學(xué)科的推動使其具有運籌帷幄的優(yōu)勢,成為國家宏觀決策和區(qū)域多目標(biāo)開發(fā)的重要技術(shù)支撐,也成為與空間信息有關(guān)各行各業(yè)的基本工具,其強(qiáng)大的空間分析能力及其發(fā)展?jié)摿κ沟?GIS在以下方面已得到廣泛、深入的應(yīng)用:測繪與地圖制圖、資源管理、城鄉(xiāng)規(guī)劃、災(zāi)害預(yù)測、土地調(diào)查與環(huán)境管理、

8、國防、宏觀決策等方面表現(xiàn)出強(qiáng)大的生命力。地理信息系統(tǒng)以數(shù)字世界表示自然界,具有完備的空間特性,可以存儲和處理不同地理發(fā)展時期的大量地理數(shù)據(jù),并具有極強(qiáng)的空間信息綜合分析能力,是地理分析的有力工具。因此,地理信息系統(tǒng)不僅要完成管理大量復(fù)雜的地理數(shù)據(jù)之任務(wù),更為重要的是要完成地理分析、評價、預(yù)測和輔助決策的任務(wù),必須發(fā)展廣泛的適用于地理信息系統(tǒng)的地理分析模型,這是地理信息系統(tǒng)真正走向?qū)嵱玫年P(guān)鍵。目前,地理信息系統(tǒng)大都應(yīng)用在城市規(guī)劃、市政管理等方面。該系統(tǒng)的特點在于將地理信息系統(tǒng)應(yīng)用于學(xué)校選址,將相關(guān)信息與地理信息系統(tǒng)相結(jié)合,實現(xiàn)了利用GIS技術(shù)對選址的要求。本文以現(xiàn)有中學(xué)位置、人口分布情況、規(guī)劃土

9、地使用情況等數(shù)據(jù)為基礎(chǔ),對學(xué)校的選址進(jìn)行了模擬運行。實驗結(jié)果表明:本文所設(shè)計的數(shù)據(jù)結(jié)構(gòu)是合理的,對有關(guān)技術(shù)問題的解決方案是正確的、可行的,將GIS技術(shù)應(yīng)用到中學(xué)選址,開發(fā)出具有實際應(yīng)用價值的UGIS,能夠為城市的規(guī)劃和管理提供快捷和方便的工具。3.2學(xué)校選址的調(diào)查與分析3.2.1背景條件:合理的學(xué)??臻g位置布局,有利于學(xué)生的上課與生活。學(xué)校的選址問題需要考慮地理位置、學(xué)生娛樂場所配套、與現(xiàn)有學(xué)校的距離間隔等因素,從總體上把握這些因素能夠確定適宜性較好的學(xué)校選址區(qū)。3.2.2學(xué)校選址要求:1)學(xué)校選址模擬需注意如下幾點:位于地勢較平坦處。結(jié)合現(xiàn)有土地利用類型綜合考慮,選擇成本不高的區(qū)域。與現(xiàn)有娛

10、樂設(shè)施相配套,學(xué)校距離這些設(shè)施越近越好。新學(xué)校應(yīng)避開現(xiàn)有學(xué)校,合理分布。各數(shù)據(jù)層權(quán)重比為距離娛樂設(shè)施占0.5,距現(xiàn)有學(xué)校距離占0.25,土地利用類型和地勢位置因素各占0.125。實現(xiàn)過程運用ArcView的拓展模塊中的空間分析部分功能,具體包括:坡度計算,直線距離制圖功能,重分類及柵格計算器等功能完成。給出適合新建學(xué)校的適宜地區(qū)圖,并簡要分析。3.2.3數(shù)據(jù)準(zhǔn)備和處理1、點狀要素: 點狀點可以是對于學(xué)校選址具有影響力的設(shè)施,具體表現(xiàn)為待選區(qū)域是否包括娛樂場所rec_sites(娛樂場所分布數(shù)據(jù))以及其他同等級的學(xué)校school(現(xiàn)有學(xué)校分布數(shù)據(jù))等設(shè)施,這對要素的空間聯(lián)系性的評價起到很大的作用

11、。2、面狀要素: Landuse(土地利用類型數(shù)據(jù))和Dem(地面高程數(shù)據(jù))都是由面狀要素體現(xiàn)。3.3適宜性評價模型構(gòu)建和分析思路:土地利用圖土地利用圖高程圖娛樂場所分布圖學(xué)校分布圖坡度圖距離娛樂場所距離學(xué)校重分類坡度重分類距離娛樂場所重分類距離學(xué)校加權(quán)疊加合并土地利用重分類4 具體操作步驟4.1設(shè)置空間分析環(huán)境ArcToolbox中選中ArcToolbo右鍵選擇【環(huán)境】,如圖1所示,然后設(shè)置相關(guān)參數(shù)。圖1展開【工作空間】,設(shè)置工作路徑,如圖2所示。圖2展開【處理范圍】,在范圍下拉框中選擇“與圖層landuse相同”,如圖3所示。圖3展開【柵格分析】,在像元大小拉框中選擇“與圖層landuse

12、相同”,如圖4所示。圖44.2數(shù)據(jù)提取從DEM數(shù)據(jù)提取坡度數(shù)據(jù)集,選擇【Spatial Analyst工具】|【表面分析】|【坡度】,輸入dem數(shù)據(jù),生成slope數(shù)據(jù)集,如圖5所示。圖5 坡度數(shù)據(jù)從娛樂場所數(shù)據(jù)“rec_sites”提取娛樂場直線距離數(shù)據(jù)。選擇【Spatial Analyst工具】|【距離分析】|【歐式距離】,生成dis_recsites數(shù)據(jù)集,如圖6所示。圖6 娛樂場直線距離數(shù)據(jù)從現(xiàn)有學(xué)校位置數(shù)據(jù)“school”提取學(xué)校直線距離數(shù)據(jù)庫。選擇【Spatial Analyst工具】|【距離分析】|【歐式距離】創(chuàng)建數(shù)據(jù)集,得到dis_school數(shù)據(jù)集,如圖7所示。圖7 學(xué)校直線

13、距離數(shù)據(jù)庫4.3重分類數(shù)據(jù)集4.3.1 重分類坡度數(shù)據(jù)集常用的數(shù)字地形分析的方法包括提取坡面地形因子和提取特征地形要素。其中提取坡面地形因子主要從地形地貌的角度考慮,地表是由不同的坡面組成的,而地貌的變化,完全源于坡面的變化。常用的坡面地形因子有坡度、坡向、平面曲率、坡面曲率、地形起伏度、粗糙度、切割深度等。而提取特征地形要素分為流域分析和可視域分析兩個方面。本文構(gòu)建的學(xué)校選址模型采取從DEM(地面高程數(shù)據(jù))提取坡度數(shù)據(jù)集,分析得到學(xué)校選址分布周圍的地勢特征,如圖8。圖8 坡度適宜性數(shù)據(jù)4.3.2重分類娛樂場直線距離數(shù)據(jù)集考慮到新學(xué)校距離娛樂場所比較近時適宜性號,采用等間距分級為10級,距離娛

14、樂場所最近適宜性最高,賦值10;距離最遠(yuǎn)的地方賦值1,得到娛樂場所適應(yīng)性數(shù)據(jù)如下圖9所示。 圖9 娛樂場所適宜性數(shù)據(jù)4.3.3 重分類現(xiàn)有學(xué)校直線距離數(shù)據(jù)集考慮到新學(xué)校距離現(xiàn)有學(xué)校比較遠(yuǎn)時適宜性較好,仍分為10級,距離學(xué)校較遠(yuǎn)的單元賦值10,距離最近的單元賦值1,如圖10。圖10 重分類學(xué)校距離圖4.3.4重分類土地利用數(shù)據(jù)集學(xué)校不適合在有濕地、水體分布區(qū)建立,于是在重分類時刪除這兩個類別:在重分類新舊值對照表中,按Ctrl鍵,選擇“water”、“wetland”、“grass”三個類別,并勾選【將缺失值更改為NoData】,如圖11。圖11 重分類設(shè)置然后,根據(jù)用地類型給各種類型賦值,得到

15、結(jié)果如下圖所示,神色部分表示比較適宜區(qū),淺色部分表示適宜性比較差,白色部分表示該處不允許建學(xué)校區(qū)域,如圖12。圖12 重分類土地利用圖5適宜區(qū)分析重分類后,各個數(shù)據(jù)集都統(tǒng)一到相同的等級體系內(nèi),且每個數(shù)據(jù)集中那些被認(rèn)為比較適宜行的屬性都被賦以較高的值,給四種因素賦以不用的權(quán)重,然后合并數(shù)據(jù)集以找出最適宜的位置。選擇【Spatial Analyst工具】|【地圖代數(shù)】|【柵格計算器】,各個重分類數(shù)據(jù)集的合并計算,最終適宜性數(shù)據(jù)集的加權(quán)計算公式如圖13。圖13得到最終結(jié)果如圖14所示:圖14 適宜性學(xué)校選址結(jié)果圖6結(jié)束語學(xué)校選址適宜性評價的影響因素是多方面的。它還包含了市政道路、高速公路、立交橋等交

16、通干道以及機(jī)動車流量等對其產(chǎn)生的影響。由于技術(shù)與知識面的局限,本文對只是基于Arcview對學(xué)校的選址問題進(jìn)行簡單的分析,但即使是這樣,依然可以認(rèn)識并感受到了gis強(qiáng)大的空間分析功能。在整個過程中,我們依照學(xué)校選址的基本原則,將GIS強(qiáng)大的空間分析功能引入到各種適宜性評估影響因素中,將各種選址因素定量化,通過直觀的柵格圖象顯示,減少主觀因素對選址結(jié)果的影響,從而為選址決策提供了科學(xué)依據(jù)。同時也就此說明基于柵格數(shù)據(jù)的空間分析方法在學(xué)校選址工作中的應(yīng)用是對選址適宜性評價的一種有益探索,將次方法廣泛應(yīng)用到選址上評價的領(lǐng)域是GIS工作者努力的方向。通過這學(xué)期的城市地理信息系統(tǒng)課程的學(xué)習(xí),我對這門課程有

17、了初步的了解,但是卻很缺乏實踐應(yīng)用能力。這次的作業(yè)給了我一個熟悉和鞏固所學(xué)內(nèi)容的機(jī)會,讓我能更好的將所學(xué)的知識跟實際應(yīng)用相結(jié)合,更加熟悉軟件的基本使用。在這次的作業(yè)中,我掌握了密度圖、距離圖、矢量多邊形轉(zhuǎn)換成柵格、柵格數(shù)據(jù)再分類、多重柵格數(shù)據(jù)之間疊合計算、疊合計算,多指標(biāo)綜合評定緩沖分析等內(nèi)容。Arcgis軟件的功能很多,操作簡單,屬性操作、各種分析操作等都很方便,而且對各種數(shù)據(jù)格式的支持跟轉(zhuǎn)換也很方便。完成作業(yè)的過程并不簡單,所需要的數(shù)據(jù)找起來很費事,很多內(nèi)容跟軟件的功能記得都不是很清楚,還要不時的翻一下課本,上網(wǎng)查等,費時很長。而且,因為我們安裝的軟件不是很好用,總是出現(xiàn)不能用、程序出錯或

18、程序無響應(yīng)等狀況,所以,經(jīng)常是做一次不成功就重新再做,很多繁瑣的步驟做了一次又一次,這在鞏固知識的同時也培養(yǎng)了我們對事的耐心跟毅力。從這次的作業(yè)中,我收獲了很多,以后還會繼續(xù)練習(xí)跟學(xué)習(xí)城市地理信息系統(tǒng)這門課程,直到較為完善的掌握這門課程。參考文獻(xiàn)1 李林基于GIS的校園信息系統(tǒng)的研究J科技信息,2007,(9):68。2 湯國安ArcGIS地理信息系統(tǒng)空間分析實驗教程科學(xué)出版社,2006。3 宋小東地理信息系統(tǒng)實習(xí)教程。4 宋小東,鈕心毅地理信息系統(tǒng)實習(xí)教程.北京:科學(xué)出版社,2004。5 郭仁忠. 空間分析. 高等教育出版社。6 王平等.GIS空間分析原理與方法.科學(xué)教育出版社 。7 余明.

19、 地理信息系統(tǒng)導(dǎo)論M. 清華大學(xué)出版社。8 王亞民,趙捧未. 地理信息系統(tǒng)及其應(yīng)用M. 西安電子科技大學(xué)出版社。附錄資料:不需要的可以自行刪除 C語言曲線函數(shù)像素函數(shù)putpixel() 畫像素點函數(shù) getpixel()返回像素色函數(shù) 直線和線型函數(shù)line() 畫線函數(shù) lineto() 畫線函數(shù) linerel() 相對畫線函數(shù) setlinestyle() 設(shè)置線型函數(shù) getlinesettings() 獲取線型設(shè)置函數(shù) setwritemode() 設(shè)置畫線模式函數(shù) 多邊形函數(shù)HYPERLINK /view/553113.htmrectangle() 畫矩形函數(shù) bar() 畫條函

20、數(shù) bar3d() 畫條塊函數(shù) drawpoly() 畫多邊形函數(shù) 圓、弧和曲線函數(shù)getaspectratio()獲取縱橫比函數(shù) circle()畫圓函數(shù) arc() 畫圓弧函數(shù) ellipse()畫HYPERLINK /view/36981.htm橢圓弧函數(shù) fillellipse() 畫橢圓區(qū)函數(shù) pieslice() 畫扇區(qū)函數(shù) sector() 畫橢圓扇區(qū)函數(shù) getarccoords()獲取圓弧坐標(biāo)函數(shù) 填充函數(shù)setfillstyle() 設(shè)置填充圖樣和顏色函數(shù) setfillpattern() 設(shè)置用戶圖樣函數(shù) floodfill() 填充閉域函數(shù) fillpoly() 填充多

21、邊形函數(shù) getfillsettings() 獲取填充設(shè)置函數(shù) getfillpattern() 獲取用戶圖樣設(shè)置函數(shù) 圖像函數(shù)imagesize() 圖像存儲大小函數(shù) getimage() 保存圖像函數(shù) putimage() 輸出圖像函數(shù) 圖形和圖像函數(shù)對許多圖形HYPERLINK /view/330120.htm應(yīng)用程序,直線和HYPERLINK /view/400.htm曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當(dāng)然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進(jìn)行疊加。 (一) 像素函數(shù)pu

22、tpixel() 畫像素點函數(shù)功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個像素點。 用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color); 說明: 參數(shù)x,y為像素點的坐標(biāo),color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。 此函數(shù)相應(yīng)的HYPERLINK /view/668911.htm頭文件是graphics.h 返回值: 無 例: 在屏幕上(6,8)處畫一個紅色像素點: putpixel(6,8,RED); getpixel()返回像素色函數(shù)功能: 函數(shù)getpixel()返回像素點顏色值。 用法: 該函數(shù)調(diào)用方式

23、為int getpixel(int x,int y); 說明: 參數(shù)x,y為像素點坐標(biāo)。 函數(shù)的返回值可以不反映實際彩色值,這取決于HYPERLINK /view/1120949.htm調(diào)色板的設(shè)置情況(參見setpalette()函數(shù))。 這個函數(shù)相應(yīng)的頭文件為graphics.h 返回值: 返回一個像素點色彩值。 例: 把屏幕上(8,6)點的像素顏色值賦給變量color。 color=getpixel(8,6); (二) 直線和線型函數(shù)有三個畫直線的函數(shù),即line(),lineto(),linerel()。這些直線使用整型坐標(biāo),并相對于當(dāng)前圖形視口,但不一定受視口限制,如果視口裁剪標(biāo)志c

24、lip為真,那么直線將受到視口邊緣截斷;如果clip為假,即使終點坐標(biāo)或新的當(dāng)前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。 有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。 line() 畫線函數(shù)功能: 函數(shù)line()使用當(dāng)前繪圖色、線型及線寬,在給定的兩點間畫一直線。 用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy); 說明: 參數(shù)startx,starty為起點坐標(biāo),endx,endy為終點坐標(biāo),函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(biāo)(一般不可見)當(dāng)前位置不改變。 此函數(shù)相應(yīng)的頭

25、文件為graphics.h 返回值: 無 例: 見函數(shù)60.linerel()中的實例。 lineto() 畫線函數(shù)功能: 函數(shù)lineto()使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置畫一直線到指定位置。 用法: 此函數(shù)調(diào)用方式為void lineto(int x,int y); 說明: 參數(shù)x,y為指定點的坐標(biāo),函數(shù)調(diào)用后,當(dāng)前位置改變到指定點(x,y)。 該函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 見函數(shù)60.linerel()中的實例。 linerel() 相對畫線函數(shù)功能: 函數(shù)linerel() 使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置開始,按指定的水平和垂直偏移距離畫

26、一直線。 用法: 這個函數(shù)調(diào)用方式為void linerel(int dx,int dy); 說明: 參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。 函數(shù)調(diào)用后,當(dāng)前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當(dāng)前位置為(18,24)。 返回值:無 例: 下面的程序為畫線函數(shù)調(diào)用實例: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); setcolor(15); line(66,66,88,88); linet

27、o(100,100); linerel(36,64); getch(); restorecrtmode(); setlinestyle() 設(shè)置線型函數(shù)功能: setlinestyle() 為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬。 用法: setlinestyle() 函數(shù)調(diào)用方式為void setlinestyle(int stly,unsigned pattern,int wigth); 說明: 參數(shù)style為線型取值,也可以用相應(yīng)名稱表示,如表1-10中所示。 參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當(dāng)style=USERBIT_LINE(值為1)時,p

28、attern的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對應(yīng)的像素顯示,因此,pattern=0 xFFFF,則畫實線;pattern=0 x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那么pattern的值可為0 xFF00和0 xF00F,當(dāng)style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。 參數(shù)wigth用來設(shè)定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實際上,線寬取值為2也是可以接受的。 若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么graphresult()會返回錯誤代碼,并且當(dāng)前線

29、型繼續(xù)有效。 Turbo C提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。 表1-10 線型 名稱取值含義SOLID_LINE0實線DOTTED_LINE1點線CENTER_LINE2中心線DASHED_LINE3虛線USERBIT_LINE4用戶自定義線型表1-11 線寬 名 稱取 值說 明NORM_WIDTH(常寬)1一個像素寬(缺省值)THICK_WIDTH(加寬)3三個像素寬這個函數(shù)的頭文件是graphics.h 返回值: 無 例: 下面的程序顯示了BC中所提供的線型圖樣: #i nclude void main() int dri

30、ver,mode;i; driver=DETECT; mode=0; initgraph(&driver,&mode,); for(i=0;i4;i+) setlinestyle(i,0,1); line(i*50,200,i*50+60,200) ; getch(); restorecrtmode(); getlinesettings() 獲取線型設(shè)置函數(shù)功能: 函數(shù)getlinesettings() 用當(dāng)前設(shè)置的線型、線圖樣和線寬填 寫linesettingstype型結(jié)構(gòu)。 用法: 函數(shù)調(diào)用方式為void getlinesettings(struct linesettingstype *

31、info); 說明: 此函數(shù)調(diào)用執(zhí)行后,當(dāng)前的線型、線圖樣和線寬值被裝入info指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置。 linesettingstype型結(jié)構(gòu)定義如下: struct linesettingstype int linestyle; unsigned upattern; int thickness; ; 其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一。 upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設(shè)置,那么該像素打開,否則關(guān)閉。 thickness為線寬值存放的變量,可參見表1-11。 getlinesetti

32、ngs()函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 返回的線型設(shè)置存放在info指向的結(jié)構(gòu)中。 例: 把當(dāng)前線型的設(shè)置寫入info結(jié)構(gòu): struct linesettingstype info; getlinesettings(&info); setwritemode() 設(shè)置畫線模式函數(shù)功能: 函數(shù)setwritemode() 設(shè)置畫線模式 用法: 函數(shù)調(diào)用方式為 void setwritemode()(int mode); 說明: 參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將覆蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點與原有圖形的

33、像素點先進(jìn)行異或(XOR)運算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調(diào)用setwritemode()設(shè)置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。 setwritemode()函數(shù)對應(yīng)的頭文件是graphics.h 返回值: 無 例: 設(shè)置畫線輸出模式為0: setwritemode(0); (三)、多邊形函數(shù)對多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起

34、考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數(shù)。 rectangle() 畫矩形函數(shù)功能: 函數(shù)rectangle() 用當(dāng)前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。 用法: 此函數(shù)調(diào)用方式為void rectangle(int left,int top,int right,int bottom); 說明: 參數(shù)left,top是左上角點坐標(biāo),right,bottom是右下角點坐標(biāo)。如果有一個以上角點不在當(dāng)前圖形視口內(nèi),且裁剪標(biāo)志clip設(shè)置的是真(1),那么調(diào)用該函數(shù)后,只有在圖形視口內(nèi)的矩形部分才被畫出。 這個函數(shù)對應(yīng)的頭文件為g

35、raphics.h 返回值: 無 例: 下面的程序畫一些矩形實例: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); rectangle(80,80,220,200); rectangle(140,99,180,300); rectangle(6,6,88,88); rectangle(168,72,260,360); getch(); restorecrtmode(); bar() 畫條函數(shù)功能: 函數(shù)bar()用當(dāng)前填充圖樣和填充色(注意不是給圖色)畫出一個指定上

36、左上角與右下角的實心長條形(長方塊或正方塊),但沒有四條邊線)。 用法: bar()函數(shù)調(diào)用方式為void bar(int left,int top,int right,int bottom); 說明: 參數(shù)left,topright,bottom分別為左上角坐標(biāo)與右下角坐標(biāo),它們和調(diào)用函數(shù)rectangle()的情形相同,調(diào)用此函數(shù)前,可用setfillstyle()或setfillpattern()設(shè)置當(dāng)前填充圖樣和填充色。 注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調(diào)用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設(shè)為0,同時topflag參數(shù)要設(shè)置為真,否則該條形無頂邊線。

37、這 應(yīng)的頭文件為graphics.h 返回值: 無 例: 見函數(shù)bar3d()中的實例。 bar3d() 畫條塊函數(shù)功能: 函數(shù)bar3d() 使用當(dāng)前繪圖色、線型及線寬畫出三維長方形條塊,并用當(dāng)前填充圖樣和填 充色填充該三維條塊的表面。 用法: 此函數(shù)調(diào)用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag); 說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標(biāo),這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏

38、顯縱橫比調(diào)節(jié)為約45度(即這時x/y比設(shè)置為1:1)。 參數(shù)topflag相當(dāng)于一個HYPERLINK /view/46060.htm布爾參數(shù),如果設(shè)置為1(真)那么條塊上放一頂面;若設(shè)置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。 要使圖形更加美觀,可利用函數(shù)floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(jié)(五)填充函數(shù) )。 bar3d()函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 下面的程序畫一個條形和條塊: #i nclude void main() int driver,mode; driver=DETE

39、CT; mode=0; initgraph(&driver,&mode,); setfillstyle(SOLID-FILL,GREEN); bar(60,80,220,160); setfillstyle(SOLID-FILL,RED); bar3d(260,180,360,240,20,1); getch(); restorecrtmode(); drawpoly() 畫多邊形函數(shù)功能: 函數(shù)drawpoly() 用當(dāng)前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。 用法: 此函數(shù)調(diào)用方式為void drawpoly(int pnumber,int *points); 說明: 參數(shù)p

40、number為多邊形的頂點數(shù);參數(shù)points指向整型HYPERLINK /view/209670.htm數(shù)組,該數(shù)組中是多邊形所有頂點(x,y)坐標(biāo)值,即一系列整數(shù)對,x坐標(biāo)值在前。顯然整型數(shù)組的維數(shù)至少為頂點數(shù)的2倍,在定義了多邊形所有頂點的數(shù)組polypoints時,頂點數(shù)目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數(shù)坐標(biāo)值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數(shù)必須等于n+1,并且最后一點(第n+1)點坐標(biāo)必須等于第一點的坐標(biāo)。 drawpoly()函數(shù)對應(yīng)的頭文件為grpahics.h 返回值:

41、 無 例: 下面的程序畫一個封閉星形圖與一個不封閉星形圖: #i nclude void main() int driver,mode; static int polypoints118=100,100,110,120,100,130,120,125,140,140,130,120, 140,110,120,115,100,100; static int polypoints218=180,100,210,120,200,130,220,125,240,140,230,120, 240,110,220,115,220,110; driver=DETECT; mode=0; initgraph(

42、&driver,&mode,); drawpoly(9,polypoints1); drawpoly(9,polypoints2); getch(); restorecrtmode(); (四)、 圓、弧和曲線函數(shù)在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因為每一種顯示卡與之相應(yīng)的顯示模式都有一個縱橫比??v橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由于偈素基本上是正方形,所以縱橫比為1.000。 為了保證幾何圖形基本按預(yù)計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬件及顯示卡產(chǎn)生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調(diào)用函數(shù)get

43、aspectratio()獲得。 getaspectratio()獲取縱橫比函數(shù)功能: 函數(shù)getaspectratio()返回x方向和y方向的比例系數(shù),用這兩個整型值可計算某一特定屏顯的縱橫比。 用法: 此函數(shù)調(diào)用方式為void getaspectratio(int xasp,int yasp); 說明: 參數(shù)xasp指向的變量存放返回的x方向比例系數(shù);參數(shù)yasp指向的變量存放返回的y方向比例系數(shù)。通常y方向比例系數(shù)為10 000, x方向比例系數(shù)不大于10 000(這是因為大多數(shù)屏幕像素高比寬長)。 注意縱橫比自動用作下面函數(shù)arc(),circle()和pieslice()中的標(biāo)尺因子

44、,使屏幕上圓或弧正常顯示。但用ellipse()函數(shù)畫橢圓必須調(diào)用本函數(shù)獲取縱橫比作為標(biāo)尺因子,否則不予調(diào)整??v橫比可用于其它幾何圖形,目的是校正和顯示圖形。 getaspectratio()函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 返回x與y方向比例系數(shù)分別存放在xasp和yasp所指向的變量中。 例: 下面的程序顯示縱橫比: int xasp,yasp; float aspectratio; getaspectratio(&xasp,&yasp); aspectratio=xasp/yasp; printf(aspect ratio: %f,aspectratio); circle

45、()畫圓函數(shù)功能: 函數(shù)circle()使用當(dāng)前繪圖色并以實線畫一個完整的圓。 用法:該函數(shù)調(diào)用方式為void circle(int x,int y,int radius); 說明: 參數(shù)x,y為圓心坐標(biāo),radius為圓半徑,用像素個素表示。注意,調(diào)用circle()函數(shù)畫圓時不用當(dāng)前線型。 不同于ellipse()函數(shù),只用單個半徑radius參數(shù)調(diào)用circle()函數(shù),故屏顯縱橫比可以自動調(diào)節(jié),以產(chǎn)生正確的顯示圖。 此函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 畫六個同心圓,圓心在(100,100)。 #i nclude void main() int driver,m

46、ode; driver=DETECT; mode=0; initgraph(&driver,&mode,); circle(100,100,10); circle(100,100,20); circle(100,100,30); circle(100,100,40); circle(100,100,50); circle(100,100,60); getch(); restorecrtmode(); arc() 畫圓弧函數(shù)功能: 函數(shù)arc()使用當(dāng)前繪圖色并以實線畫一圓弧。 用法: 函數(shù)調(diào)用方式為void arc(int x,int y,int startangle,int endangle

47、,int radius); 說明: 參數(shù)x,y為圓心坐標(biāo),startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標(biāo)和半徑以像素個數(shù)給出,起始角和終止角以度為單位,0度位于右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但并不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動調(diào)

48、節(jié)。 arc()函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓弧: #i ncludegraphics.h void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); setcolor(WHITE); arc(200,200,0,120,100); getch(); restorecrtmode(); graphics.h頭文件的內(nèi)容:/* graphics.h Definitions for Graphics Packa

49、ge. Copyright (c) Borland International 1987,1988 All Rights Reserved. */ #if _STDC_ #define _Cdecl #else #define _Cdecl cdecl #endif #if !defined(_GRAPHX_DEF_) #define _GRAPHX_DEF_ enum graphics_errors /* graphresult error return codes */ grOk = 0, grNoInitGraph = -1, grNotDetected = -2, grFileNotF

50、ound = -3, grInvalidDriver = -4, grNoLoadMem = -5, grNoScanMem = -6, grNoFloodMem = -7, grFontNotFound = -8, grNoFontMem = -9, grInvalidMode = -10, grError = -11, /* generic error */ grIOerror = -12, grInvalidFont = -13, grInvalidFontNum = -14, grInvalidVersion = -18 ; enum graphics_drivers /* defin

51、e graphics drivers */ DETECT, /* requests autodetection */ CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514, /* 1 - 6 */ HERCMONO, ATT400, VGA, PC3270, /* 7 - 10 */ CURRENT_DRIVER = -1 ; enum graphics_modes /* graphics modes for each driver */ CGAC0 = 0, /* 320 x200 palette 0; 1 page */ CGAC1 = 1, /* 320 x20

52、0 palette 1; 1 page */ CGAC2 = 2, /* 320 x200 palette 2: 1 page */ CGAC3 = 3, /* 320 x200 palette 3; 1 page */ CGAHI = 4, /* 640 x200 1 page */ MCGAC0 = 0, /* 320 x200 palette 0; 1 page */ MCGAC1 = 1, /* 320 x200 palette 1; 1 page */ MCGAC2 = 2, /* 320 x200 palette 2; 1 page */ MCGAC3 = 3, /* 320 x2

53、00 palette 3; 1 page */ MCGAMED = 4, /* 640 x200 1 page */ MCGAHI = 5, /* 640 x480 1 page */ EGALO = 0, /* 640 x200 16 color 4 pages */ EGAHI = 1, /* 640 x350 16 color 2 pages */ EGA64LO = 0, /* 640 x200 16 color 1 page */ EGA64HI = 1, /* 640 x350 4 color 1 page */ EGAMONOHI = 0, /* 640 x350 64K on

54、card, 1 256K on card, 4 pages */ HERCMONOHI = 0, /* 720 x348 2 pages */ ATT400C0 = 0, /* 320 x200 palette 0; 1 page */ ATT400C1 = 1, /* 320 x200 palette 1; 1 page */ ATT400C2 = 2, /* 320 x200 palette 2; 1 page */ ATT400C3 = 3, /* 320 x200 palette 3; 1 page */ ATT400MED = 4, /* 640 x200 1 page */ ATT

55、400HI = 5, /* 640 x400 1 page */ VGALO = 0, /* 640 x200 16 color 4 pages */ VGAMED = 1, /* 640 x350 16 color 2 pages */ VGAHI = 2, /* 640 x480 16 color 1 page */ PC3270HI = 0, /* 720 x350 1 page */ IBM8514LO = 0, /* 640 x480 256 colors */ IBM8514HI = 1 /*1024x768 256 colors */ ; /* Colors for setpal

56、ette and setallpalette */ #if !defined(_COLORS) #define _COLORS enum COLORS BLACK, /* dark colors */ BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, /* light colors */ LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE ; #endif enum CGA_COLORS CGA_LIGHTGREEN = 1, /*

57、 Palette C0 Color Names */ CGA_LIGHTRED = 2, CGA_YELLOW = 3, CGA_LIGHTCYAN = 1, /* Palette C1 Color Names */ CGA_LIGHTMAGENTA = 2, CGA_WHITE = 3, CGA_GREEN = 1, /* Palette C2 Color Names */ CGA_RED = 2, CGA_BROWN = 3, CGA_CYAN = 1, /* Palette C3 Color Names */ CGA_MAGENTA = 2, CGA_LIGHTGRAY = 3 ; en

58、um EGA_COLORS EGA_BLACK = 0, /* dark colors */ EGA_BLUE = 1, EGA_GREEN = 2, EGA_CYAN = 3, EGA_RED = 4, EGA_MAGENTA = 5, EGA_BROWN = 20, EGA_LIGHTGRAY = 7, EGA_DARKGRAY = 56, /* light colors */ EGA_LIGHTBLUE = 57, EGA_LIGHTGREEN = 58, EGA_LIGHTCYAN = 59, EGA_LIGHTRED = 60, EGA_LIGHTMAGENTA = 61, EGA_

59、YELLOW = 62, EGA_WHITE = 63 ; enum line_styles /* Line styles for get/setlinestyle */ SOLID_LINE = 0, DOTTED_LINE = 1, CENTER_LINE = 2, DASHED_LINE = 3, USERBIT_LINE = 4, /* User defined line style */ ; enum line_widths /* Line widths for get/setlinestyle */ NORM_WIDTH = 1, THICK_WIDTH = 3, ; enum f

60、ont_names DEFAULT_FONT = 0, /* 8x8 bit mapped font */ TRIPLEX_FONT = 1, /* Stroked fonts */ SMALL_FONT = 2, SANS_SERIF_FONT = 3, GOTHIC_FONT = 4 ; #define HORIZ_DIR 0 /* left to right */ #define VERT_DIR 1 /* bottom to top */ #define USER_CHAR_SIZE 0 /* user-defined char size */ enum fill_patterns /

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論