精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁計算機應(yīng)用論文

核心期刊論文基于GDAL的ESRI Shapefile格式文件處理

發(fā)布時間:2014-09-26 14:45:45更新時間:2014-09-26 14:49:53 1

  核心期刊論文發(fā)表推薦《電子科技》創(chuàng)刊于1987年,月刊,每月15日出版。主要刊登高等院校、科研院所、電子行業(yè)企事業(yè)單位等科研機構(gòu)在電子技術(shù)應(yīng)用、通信工程、計算機科學技術(shù)與應(yīng)用、網(wǎng)絡(luò)安全及信息、光電子材料等領(lǐng)域最新的學術(shù)、技術(shù)論文、工程技術(shù)應(yīng)用研究、教學實踐總結(jié)、行業(yè)綜述等稿件。
  摘 要: 隨著遙感應(yīng)用技術(shù)的不斷發(fā)展,對ESRI Shapefile格式圖像文件的處理需求變得日益緊迫。目前能對它進行處理的軟件有很多,但是這些軟件運行時占用大量系統(tǒng)資源,而直接將商業(yè)軟件嵌入到自主開發(fā)的軟件中也是不可取的。因此,能夠在自主開發(fā)的遙感圖像處理軟件中實現(xiàn)對ESRI Shapefile格式文件的操作已經(jīng)變得非常重要。通過對ESRI Shapefile格式的影像數(shù)據(jù)結(jié)構(gòu)特征分析,提出基于GDAL實現(xiàn)ESRI Shapefile格式文件到png文件格式的轉(zhuǎn)換和處理方法,包括地理信息獲取、坐標系統(tǒng)轉(zhuǎn)換和文件格式轉(zhuǎn)換。通過試驗驗證了該方法的可行性。

  關(guān)鍵詞: GDAL,ESRI Shapefile格式,地理信息獲取,坐標系統(tǒng)轉(zhuǎn)換,文件格式轉(zhuǎn)換

  ESRI Shapefile file handling based on GDAL

  Kong Shuaike1, Qiao Baojun1,2, Fu Zhengye1

  (1. Department of Computer Science and Technology, Henan University, Kaifeng, Henan 475000, China; 2. Software Academy, Henan University)

  Abstract: With the incessant development of remote sensing application technology, the demand for analyzing the image files of ESRI Shapefile becomes more and more. There are a lot of software available currently. However, these software take up redundant resources at runtime. It is inadvisable to directly embed the commercial software into the self-developed software. Therefore, it is become important to handle ESRI Shapefile format file with self-developed remote sensing image processing software. Through analysis on the image date and structure features of the ESRI Shapefile format, the conversion method of ESRI Shapefile files to png format based on GDAL is proposed, including acquiring geographic info, coordinate transformation and format conversion. The practice shows the feasibility of the method.

  Key words: GDAL; ESRI Shapefile format; geographic information acquisition; coordinate transformation; format conversion

  0 引言

  地理信息系統(tǒng)是近年來新興的一個集地理學、計算機技術(shù)、遙感技術(shù)和地圖學于一體的綜合系統(tǒng),已廣泛應(yīng)用在城市、資源、環(huán)境、交通、人口、土地、災害和規(guī)劃管理等領(lǐng)域[1]。ESRI公司的Shapefile是用于存儲非拓撲結(jié)構(gòu)空間要素的一種數(shù)據(jù)格式,已成為GIS數(shù)據(jù)交換的一種標準格式[2]。 ESRI Shapefile作為矢量文件的通用格式之一,很多商業(yè)化軟件都具備對Shapefile文件的操作功能。地理信息系統(tǒng)軟件ArcGIS作為中國地理信息界用戶群體最大、應(yīng)用最廣的GIS技術(shù)平臺之一[3],對Shapefile文件提供了很好的支持。然而在實際項目開發(fā)中,把功能龐大的ArcGIS嵌入到項目中是不現(xiàn)實的,此外,項目開發(fā)也需要擺脫對商業(yè)軟件的依賴。因此靈活準確地處理ESRI Shapefile格式圖像,就變得越來越重要。本文基于GDAL庫實現(xiàn)了一種滿足以上需求的方案。通過分析ESRI Shapefile文件格式,尋找獲取圖像信息、地理信息的方法;通過注冊環(huán)境變量,調(diào)用GDAL的OGR庫,就能夠完成ESRI Shapefile文件的讀取;通過了解更多的OGR庫的知識,分析不同坐標系之間轉(zhuǎn)換的可行性,最終不僅靈活實現(xiàn)了ESRI Shapefile格式圖像的信息的獲取,也實現(xiàn)了ESRI Shapefile文件格式向png格式的轉(zhuǎn)換以及坐標系的轉(zhuǎn)換。這些成果在實際項目開發(fā)中都有著重要的現(xiàn)實意義。

  1 讀取文件

  ESRI Shapefile屬于一種矢量圖形格式,它能夠保存幾何圖形的位置及相關(guān)屬性。ESRI Shapefile文件格式采用編碼效率較高的二進制格式,點的坐標采用雙精度保存[4]。ESRI Shapefile文件系統(tǒng)由多個文件組成,每個完整的Shapefile文件至少由三個文件組成:SHP文件、SHX文件和DBF文件。SHP文件用于保存元素的幾何實體;SHX文件保存幾何體位置索引,記錄每一個幾何體在SHP文件之中的位置;dBASE(DBF文件)表包含了實體的屬性數(shù)據(jù)。圖形數(shù)據(jù)和屬性數(shù)據(jù)通過索引號建立一一對應(yīng)的關(guān)系[5]。有些ESRI Shapefile文件還包括PRJ文件,PRJ是投影文件, 包含著相關(guān)圖幅的投影信息[6]。   GDAL(Geospatial Data Abstraction Library)是一個基于X/MIT許可協(xié)議的開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫。它利用抽象數(shù)據(jù)模型來表達所支持的各種文件格式,并擁有一系列命令行工具用于數(shù)據(jù)轉(zhuǎn)換和處理。OGR是GDAL庫的一部分,它提供對矢量數(shù)據(jù)的支持。OGR提供了對多種矢量數(shù)據(jù)格式的讀寫支持[7],包括ESRI Shapefile文件。在OGR中,不同的數(shù)據(jù)格式對應(yīng)不同的驅(qū)動(Driver),OGR統(tǒng)一管理所有支持的驅(qū)動,使用驅(qū)動完成地理數(shù)據(jù)格式的讀取與保存。由于ESRI Shapefile文件格式具有一定的復雜度,我們無法直接提取其屬性信息,而利用GDAL庫就可以很輕松地完成這一功能。

  我們可以用以下代碼獲取ESRI Shapefile屬性信息:

  1 OSGeo.OGR.Ogr.RegisterAll();

  2 Driver dr=Ogr.GetDriverByName("ESRI Shapefile");

  3 DataSource orgDs=dr.Open(ShpFilePath, 0);

  4 if (orgDs==null)

  5 return;

  6 Layer orgLayer=orgDs.GetLayerByIndex(0);

  7 Envelope ex=new Envelope();

  8 orgLayer.GetExtent(ex, 0);

  9 string strShapeType=orgLayer.GetLayerDefn()

  .GetGeomType().ToString();

  10 Feature orgFr=orgLayer.GetFeature(0);

  11 Geometry ogrGeo=orgFr.GetGeometryRef();

  12 FieldType strType=orgFr.GetFieldType(0);

  13 FeatureDefn pofeature=orgLayer.GetLayerDefn();

  14 FieldDefn pofield=pofeature.GetFieldDefn(0);

  15 OSGeo.OSR.SpatialReference Spatial1=ogrGeo

  .GetSpatialReference();

  16 Spatial1.ExportToWkt(out strReference);

  17 ogrGeo.ExportToWkt(out strPoints);

  為方便查看ESRI Shapefile文件的屬性信息,將獲取到的信息以xml文件的形式保存。圖1是北京縣域的Shapefile文件信息的部分截圖。

  2 坐標系統(tǒng)的轉(zhuǎn)換

  ESRI Shapefile文件保存的是地理空間資料,不可避免地涉及到地理坐標系統(tǒng)。坐標系統(tǒng)的定義基于地球橢球體,下面我們列舉一些常用的坐標系統(tǒng)及其采用的地球橢球體。克拉索夫斯基橢球(1940Krassovsky):北京54坐標系采用的橢球。1975年I. U.G. G推薦橢球( 國際大地測量協(xié)會1975):西安80坐標系采用的橢球。WGS-84橢球(GPS全球定位系統(tǒng)橢球、17屆國際大地測量協(xié)會):WGS-84坐標系橢球 [8]。由于不同坐標系采用不同的球面坐標和投影算法,同一地理位置,在不同的坐標系統(tǒng)下,所顯示出來的坐標值也不同。在應(yīng)用程序中,我們需要將使用不同坐標系統(tǒng)的ESRI Shapefile文件,以統(tǒng)一的坐標系統(tǒng),將坐標值顯示出來。OGR庫中的OGRSpatialReference和 OGRCoordinateTransformation類提供了用來描繪坐標系統(tǒng)(投影和基準面)以及坐標系統(tǒng)相互之間轉(zhuǎn)換的服務(wù)。 OGRSpatialReference類用來創(chuàng)建一個坐標系統(tǒng)[9],CoordinateTransformation類用來在不同坐標系統(tǒng)間轉(zhuǎn)換坐標。新的轉(zhuǎn)換對象由OGRCoordinateTransformation()方法創(chuàng)建。創(chuàng)建后可用TransformPoint()方法來轉(zhuǎn)換不同坐標系的點。以下代碼完成不同坐標系下的坐標轉(zhuǎn)換。

  1 OSGeo.OGR.Ogr.RegisterAll();

  2 Driver dr=Ogr.GetDriverByName("ESRI Shapefile");

  3 DataSource orgDs=dr.Open(ShpFilePath, 0);

  4 if (orgDs==null)

  5 return;

  6 Layer orgLayer=orgDs.GetLayerByIndex(0);

  7 Feature orgFr=orgLayer.GetFeature(i);

  8 Geometry ogrGeo=orgFr.GetGeometryRef();

  9 OSGeo.OSR.SpatialReference sourceSpatial=ogrGeo

  .GetSpatialReference();

  10 OSGeo.OSR.SpatialReference targetSpatial=new

  OSGeo.OSR.SpatialReference("");

  11 Spatial.ImportFromProj4("+proj=longlat+ellps=WGS84

  +no_defs");   12 OSGeo.OSR.CoordinateTransformation tran=new OSGeo

  .OSR.CoordinateTransformation(sourceSpatial,targetSpatial);

  13 double[] da=new double[3];

  14 tran.TransformPoint(da,x,y,z);

  3 文件格式轉(zhuǎn)換

  3.1 格式轉(zhuǎn)換

  ESRI Shapefile文件是一種特殊的影像格式,無法用常用的看圖工具正常打開,因此不方便使用和查看,但將ESRI Shapefile文件轉(zhuǎn)換為png格式后就可以很方便地進行處理。在ESRI Shapefile文件格式簡介中我們了解到,ESRI Shapefile文件將地理空間資料以坐標點串的形式存儲起來,根據(jù)這些點串,我們可以利用C#語言中的Graphics類輕松地將該地理形狀描繪出來。根據(jù)這一原理,可完成ESRI Shapefile影像格式向png格式的轉(zhuǎn)換。利用ESRI Shapefile文件讀取,獲取ESRI Shapefile地理坐標點串。然而這里還有一個問題需要解決:如何將地理經(jīng)緯度坐標轉(zhuǎn)換為畫布坐標。針對這一問題,本文做了以下操作:首先計算該 ESRI Shapefile文件的邊界盒大小,求出邊界盒的寬度與高度,然后與畫布的對應(yīng)寬度與高度做比值運算,確定放大倍數(shù),再計算ESRI Shapefile文件每個地理坐標點與邊界盒左上角的偏移距離,由此確定該點在畫布中的確切位置。轉(zhuǎn)化算法如下:

  PIONT-TRANSFORM(xmax,xmin,ymax,ymin,Point)

  1 //計算邊界盒寬度

  2 width=Math.Abs(xmax-xmin);

  3 //計算邊界盒高度

  4 height=Math.Abs(ymax-ymin)

  5 //邊界盒的寬高比

  6 aspectRatio=width/height;

  7 //畫布的寬高比

  8 canvasRatio=Width/Height;

  9 //計算比例,使得shp幾何圖形可以保持原有比例在畫布上最大化顯示

  10 scaleFactor=1.0;

  11 if aspectRatio  12 then scaleFactor=Height/height;

  13 else

  14 then scaleFactor=Width/width;

  15 newPoint.X=(Point.X-xmin)*scaleFactor;

  16 //注意畫布y坐標軸與實際y坐標軸方向相反

  17 newPoint.Y=(ymax-Point.Y )*scaleFactor;

  18 return newPiont;

  用此方法將ESRI Shapefile文件地理坐標點串全部轉(zhuǎn)換為畫布坐標后,只需用Graphics類的DrawCurve()方法畫出圖形,利用Bitmap的Save方法將其保存為png格式。

  3.2 轉(zhuǎn)化效果

  對同一個北京縣域的ESRI Shapefile文件,圖2是在arcGis下看到的形狀,圖3是利用上述方法得到png圖像。

  對比圖2與圖3可以清晰地看出,對于同一個ESRI Shapefile文件,通過程序轉(zhuǎn)換后的png圖與arcgis下查看的到圖像形狀完全一樣,圖像沒有失真。另外,可以通過該方法,將ESRI Shapefile文件圖像形狀以Image對象的形式顯示在應(yīng)用程序相應(yīng)的控件中。

  4 結(jié)束語

  本文提出基于GDAL開源函數(shù)庫對ESRI Shapefiles文件格式的處理,實現(xiàn)提取ESRI Shapefiles文件的詳細屬性信息,以及不同坐標系統(tǒng)之間的轉(zhuǎn)換,將ESRI Shapefiles格式轉(zhuǎn)換為易于查看的png格式,通過實驗驗證,獲取到的ESRI Shapefiles文件屬性信息詳細、準確,轉(zhuǎn)換后的png圖像效果良好。通過這一成果,可以有效地擺脫應(yīng)用程序?qū)ι虡I(yè)軟件的依賴,將其應(yīng)用在實際項目開發(fā)中有重要的現(xiàn)實意義。在坐標系統(tǒng)轉(zhuǎn)換過程中,由于掌握的地理坐標系統(tǒng)的資料及個人能力有限,目前僅完成幾種常用的坐標系統(tǒng)間的轉(zhuǎn)換。今后我們將進一步研究地理坐標系統(tǒng),提供更多坐標系統(tǒng)間的轉(zhuǎn)換,提高坐標轉(zhuǎn)換的精度及效率。

  參考文獻

  [1] 柳佳佳,欒曉巖.ShapeFile格式文件寫入方法研究[J].測繪通報

  2012.9:90-92

  [2] 佘遠見,郭旭東,何挺.用于操作Shapefile的COM組件開發(fā)與應(yīng)用[J].

  測繪科學,2009.34(4):230-231

  [3] 李秀梅,吳凡,徐殿成等.基于ArcGIS的校園圖書館三維建模研究[J].

  計算機科學,2012.39(Z6):563-565

  [4] 劉峰,張繼賢,李海濤.SHP文件格式的研究與應(yīng)用[J].測繪科學,

  2006.31(6):116-117

  [5] 劉偉,張海榮.基于GML從DXF文件到SHP文件格式轉(zhuǎn)換的研究與

  開發(fā)[J].測繪科學,2007.32(4):177-178

  [6] 蔣紅燕,楊哲海.地理信息從SHP格式向SVG格式轉(zhuǎn)換[J].測繪通報,

  2011.2:73-76


轉(zhuǎn)載請注明來自:http://www.jinnzone.com/jisuanjiyingyonglw/44689.html