《矢量數(shù)據(jù)格式訪問開源包OGR.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《矢量數(shù)據(jù)格式訪問開源包OGR.ppt(32頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、OGR,,官網(wǎng):http://www.gdal.org/ogr OGR是一個(gè)開源的矢量空間數(shù)據(jù)的讀寫、轉(zhuǎn)換器,已被松散集成到GDAL中。 目前支持40多種格式(http://www.gdal.org/ogr/ogr_formats.html) C/C++,OGR數(shù)據(jù)模型,核心對(duì)象 驅(qū)動(dòng)(Driver) 數(shù)據(jù)源(DataSource) 圖層(Layer) 要素(Feature) 幾何圖形(Geometry) 其他相關(guān)對(duì)象 要素定義(FeatureDefn) 字段定義(FieldDefn) 空間參照系統(tǒng)定義(SpatialReference) ,函數(shù)命名規(guī)律,OGR_DS_xxx:數(shù)據(jù)源操作 OG
2、R_L_xxx:圖層操作 OGR_FD_xxx:要素定義操作 OGR_F_xxx:要素操作 OGR_G_xxx:幾何圖形操作 OGR_Fld_xxx:字段定義操作,注冊(cè)所有格式,注冊(cè)所有格式 OGRRegisterAll(); 注意: 必須在編譯時(shí)打開格式開關(guān)。 通常在程序中調(diào)用其他OGR函數(shù)之前,必須首先調(diào)用此函數(shù),數(shù)據(jù)集,打開 OGROpen 釋放 OGR_DS_Destroy,OGRDataSourceH OGROpen ( const char * pszName, int bUpdate, OGRSFDriverH * pahDriverList ) 遍歷所有支持的格式,直到成功打開
3、,或者沒有合適的驅(qū)動(dòng)則返回NULL。成功返回?cái)?shù)據(jù)源句柄。 bUpdate:FALSE:只讀方式打開,TRUE:讀寫方式打開。 pahDriverList:是輸出參數(shù),如果成功打開,可返回打開的驅(qū)動(dòng)。 void OGR_DS_Destroy ( OGRDataSourceH hDataSource ) 釋放打開的數(shù)據(jù)源,打開和釋放數(shù)據(jù)集,數(shù)據(jù)集常用操作,OGR_DS_GetName 獲取數(shù)據(jù)源名稱 OGR_DS_GetLayerCount 獲取圖層數(shù) OGR_DS_GetLayer 根據(jù)索引號(hào)打開圖層,返回圖層句柄 OGR_DS_GetLayerByName 根據(jù)圖層名打開圖層,返回圖層句柄 O
4、GR_DS_DeleteLayer 根據(jù)索引號(hào)刪除圖層 OGR_DS_CreateLayer 創(chuàng)建新圖層,圖層,一個(gè)數(shù)據(jù)集中可以包含多個(gè)圖層 圖層由多個(gè)要素構(gòu)成 可以基于給定條件搜索要素,圖層基本信息操作,OGR_L_GetLayerDefn 獲取圖層定義信息 OGR_L_GetSpatialRef 獲取圖層空間參照系統(tǒng)信息(投影信息) OGR_L_GetFeatureCount 獲取要素?cái)?shù)目 OGR_L_GetExtent 獲取外接矩形范圍 OGR_L_GetFIDColumn 獲取FID所在字段的字段名 OGR_L_GetGeometryColumn 獲取geometry所在字段的字段名,
5、圖層要素操作,OGR_L_GetFeature 根據(jù)FID獲取要素 OGR_L_SetFeature 根據(jù)FID修改要素 OGR_L_CreateFeature 創(chuàng)建新的要素 OGR_L_DeleteFeature 刪除要素,圖層要素查找,OGR_L_ResetReading 重置以開始讀取下一個(gè)要素,調(diào)用OGR_L_GetNextFeature之前必須先調(diào)用本函數(shù) OGR_L_GetNextFeature 獲取下一個(gè)滿足SpatialFilter條件的要素 OGR_L_SetSpatialFilter 設(shè)置空間搜索geometry(目前只支持Intersect),且可能不準(zhǔn)確 OGR_L_S
6、etSpatialFilterRect 設(shè)置矩形搜索范圍(目前只支持Intersect),且可能不準(zhǔn)確 OGR_L_GetSpatialFilter 獲取空間搜索的geometry,要素,要素代表空間對(duì)象,包括空間信息和屬性信息 要素用FID標(biāo)識(shí) 空間信息用幾何圖形(geometry)標(biāo)識(shí) 屬性信息用關(guān)系模型的字段標(biāo)識(shí) 要素還與空間參照系統(tǒng)相關(guān)聯(lián),要素基本信息操作,OGR_F_Create OGR_F_Destroy 所有的Feature在使用完后,一定要使用本函數(shù)來釋放內(nèi)存。 OGR_F_GetDefnRef OGR_F_GetFieldCount OGR_F_GetFieldDefnRef
7、 OGR_F_GetFieldIndex,獲取要素字段值,FID: OGR_F_GetFID 空間信息: OGR_F_GetGeometryRef 屬性信息: OGR_F_GetFieldAsInteger OGR_F_GetFieldAsDouble OGR_F_GetFieldAsString OGR_F_GetFieldAsIntegerList OGR_F_GetFieldAsDoubleList OGR_F_GetFieldAsStringList OGR_F_GetFieldAsBinary OGR_F_GetFieldAsDateTime,設(shè)置要素字段值,FID: OGR_F_S
8、etFID 空間信息: OGR_F_SetGeometry OGR_F_SetGeometryDirectly 屬性信息 OGR_F_SetFieldInteger OGR_F_SetFieldDouble OGR_F_SetFieldString OGR_F_SetFieldIntegerList OGR_F_SetFieldDoubleList OGR_F_SetFieldStringList OGR_F_SetFieldBinary OGR_F_SetFieldDateTime,幾何圖形,幾何圖形代表空間幾何形狀,是要素的空間信息,可以存在獨(dú)立于要素之外的幾何圖形。 幾何圖形操作包括對(duì)構(gòu)
9、成幾何圖形的點(diǎn)進(jìn)行增刪改等操作、空間相互關(guān)系操作、坐標(biāo)變換操作等,幾何圖形基本信息操作,OGR_G_GetDimension OGR_G_GetEnvelope OGR_G_GetArea OGR_G_Centroid OGR_G_IsSimple OGR_G_IsRing,幾何圖形坐標(biāo)點(diǎn)操作,OGR_G_GetPointCount OGR_G_GetX OGR_G_GetY OGR_G_GetZ OGR_G_GetPoint OGR_G_AddPoint OGR_G_AddPoint_2D OGR_G_SetPoint OGR_G_SetPoint_2D,復(fù)合幾何圖形操作,OGR_G_Get
10、GeometryCount OGR_G_GetGeometryRef OGR_G_AddGeometry OGR_G_RemoveGeometry,空間關(guān)系判斷操作,OGR_G_Intersects OGR_G_Equals OGR_G_Disjoint OGR_G_Touches OGR_G_Crosses OGR_G_Within OGR_G_Contains OGR_G_Overlaps,空間關(guān)系運(yùn)算,OGR_G_GetBoundary OGR_G_ConvexHull OGR_G_Buffer OGR_G_Intersection OGR_G_Union OGR_G_Differenc
11、e OGR_G_Distance,坐標(biāo)變換,OGR_G_Transform OGR_G_TransformTo,要素定義(FeatureDefn),要素定義對(duì)象( FeatureDefn )與圖層相關(guān)聯(lián),是圖層的重要屬性,它確定了圖層的結(jié)構(gòu) FeatureDefn主要由若干個(gè)字段構(gòu)成 FeatureDefn 通常至少包含兩個(gè)重要的字段:FID和Geometry。FID用長(zhǎng)整數(shù)表示,Geometry是抽象類型。,要素定義操作,OGR_FD_Create OGR_FD_Destroy OGR_FD_GetName OGR_FD_GetFieldCount OGR_FD_GetFieldDefn O
12、GR_FD_GetFieldIndex OGR_FD_AddFieldDefn OGR_FD_SetGeomType,常用的空間數(shù)據(jù)類型,wkbPoint = 1, wkbLineString = 2, wkbPolygon = 3, wkbMultiPoint = 4, wkbMultiLineString = 5, wkbMultiPolygon = 6, wkbGeometryCollection = 7,,字段定義操作,字段定義用于定義圖層的屬性表結(jié)構(gòu) 每個(gè)字段通常包含:名字、類型、寬度、小數(shù)位(實(shí)數(shù)類型)等信息,字段定義操作,OGR_Fld_Create OGR_Fld_SetNa
13、me OGR_Fld_GetNameRef OGR_Fld_GetType OGR_Fld_SetType OGR_Fld_GetWidth OGR_Fld_SetWidth OGR_Fld_GetPrecision OGR_Fld_SetPrecision,,/** Simple 32bit integer */ OFTInteger = 0, /** List of 32bit integers */ OFTIntegerList = 1, /** Double Precision floating point */ OFTReal = 2, /** List of dou
14、bles */ OFTRealList = 3, /** String of ASCII chars */ OFTString = 4, /** Array of strings */ OFTStringList = 5, /** Double byte string (unsupported) */ OFTWideString = 6, /** List of wide strings (unsupported) */ OFTWideStringList = 7, /** Raw Binary data */ OFTBinary = 8, /**
15、 Date */ OFTDate = 9, /** Time */ OFTTime = 10, /** Date and Time */ OFTDateTime = 11,空間參照系統(tǒng)(OGRSpatialReference),遵循OGC的坐標(biāo)轉(zhuǎn)換規(guī)范(OpenGIS Coordinate Transformations specification) 使用WKT格式描述坐標(biāo)系統(tǒng) 調(diào)用PROJ.4實(shí)現(xiàn)投影變換,投影設(shè)置,OGRSpatialReference oSRS; oSRS.SetGeogCS( My geographic coordinat
16、e system, WGS_1984, My WGS84 Spheroid, SRS_WGS84_SEMIMAJOR, SRS_WGS84_INVFLATTENING, Greenwich, 0.0, degree, SRS_UA_DEGREE_CONV );,WKT格式,PROJCSUTM 17 (WGS84) in northern hemisphere., GEOGCSWGS 84, DATUMWGS_1984, SPHEROIDWGS 84,6378137,298.257223563, AUTH
17、ORITYEPSG,7030, TOWGS840,0,0,0,0,0,0, AUTHORITYEPSG,6326, PRIMEMGreenwich,0,AUTHORITYEPSG,8901, UNITDMSH,0.0174532925199433,AUTHORITYEPSG,9108, AXISLat,NORTH, AXISLong,EAST, AUTHORITYEPSG,4326, PROJECTIONTransverse_Mercator, PARAMETERlatitude_of_origin,0, PARAMETERcentral_meridian,-81, PARAMETERscale_factor,0.9996, PARAMETERfalse_easting,500000, PARAMETERfalse_northing,0,