资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,OGR,OGR,1,官网:http:/www.gdal.org/ogr,OGR是一个开源的矢量空间数据的读写、转换器,已被松散集成到GDAL中。,目前支持40多种格式(,http:/www.gdal.org/ogr/ogr_formats.html,),C/C+,官网:http:/www.gdal.org/ogr,2,OGR数据模型,核心对象,驱动(Driver),数据源(DataSource),图层(Layer),要素(Feature),几何图形(Geometry),其他相关对象,要素定义(FeatureDefn),字段定义(FieldDefn),空间参照系统定义(SpatialReference),OGR数据模型核心对象,3,函数命名规律,OGR_DS_xxx:数据源操作,OGR_L_xxx:图层操作,OGR_FD_xxx:要素定义操作,OGR_F_xxx:要素操作,OGR_G_xxx:几何图形操作,OGR_Fld_xxx:字段定义操作,函数命名规律OGR_DS_xxx:数据源操作,4,注册所有格式,注册所有格式,OGRRegisterAll();,注意:,必须在编译时打开格式开关。,通常在程序中调用其他OGR函数之前,必须首先调用此函数,注册所有格式注册所有格式,5,数据集,打开,OGROpen,释放,OGR_DS_Destroy,数据集打开,6,OGRDataSourceH OGROpen (const char*pszName,int bUpdate,OGRSFDriverH*pahDriverList),遍历所有支持的格式,直到成功打开,或者没有合适的驱动则返回NULL。成功返回数据源句柄。,bUpdate:FALSE:只读方式打开,TRUE:读写方式打开。,pahDriverList:是输出参数,如果成功打开,可返回打开的驱动。,void OGR_DS_Destroy (OGRDataSourceH hDataSource ),释放打开的数据源,打开和释放数据集,OGRDataSourceH OGROpen (cons,7,数据集常用操作,OGR_DS_GetName,获取数据源名称,OGR_DS_GetLayerCount,获取图层数,OGR_DS_GetLayer,根据索引号打开图层,返回图层句柄,OGR_DS_GetLayerByName,根据图层名打开图层,返回图层句柄,OGR_DS_DeleteLayer,根据索引号删除图层,OGR_DS_CreateLayer,创建新图层,数据集常用操作OGR_DS_GetName,8,图层,一个数据集中可以包含多个图层,图层由多个要素构成,可以基于给定条件搜索要素,图层一个数据集中可以包含多个图层,9,图层基本信息操作,OGR_L_GetLayerDefn,获取图层定义信息,OGR_L_GetSpatialRef,获取图层空间参照系统信息(投影信息),OGR_L_GetFeatureCount,获取要素数目,OGR_L_GetExtent,获取外接矩形范围,OGR_L_GetFIDColumn,获取FID所在字段的字段名,OGR_L_GetGeometryColumn,获取geometry所在字段的字段名,图层基本信息操作OGR_L_GetLayerDefn,10,图层要素操作,OGR_L_GetFeature,根据FID获取要素,OGR_L_SetFeature,根据FID修改要素,OGR_L_CreateFeature,创建新的要素,OGR_L_DeleteFeature,删除要素,图层要素操作OGR_L_GetFeature,11,图层要素查找,OGR_L_ResetReading,重置以开始读取下一个要素,调用OGR_L_GetNextFeature之前必须先调用本函数,OGR_L_GetNextFeature,获取下一个满足SpatialFilter条件的要素,OGR_L_SetSpatialFilter,设置空间搜索geometry(目前只支持Intersect),且可能不准确,OGR_L_SetSpatialFilterRect,设置矩形搜索范围(目前只支持Intersect),且可能不准确,OGR_L_GetSpatialFilter,获取空间搜索的geometry,图层要素查找OGR_L_ResetReading,12,要素,要素代表空间对象,包括空间信息和属性信息,要素用FID标识,空间信息用几何图形(geometry)标识,属性信息用关系模型的字段标识,要素还与空间参照系统相关联,要素要素代表空间对象,包括空间信息和属性信息,13,要素基本信息操作,OGR_F_Create,OGR_F_Destroy,所有的Feature在使用完后,一定要使用本函数来释放内存。,OGR_F_GetDefnRef,OGR_F_GetFieldCount,OGR_F_GetFieldDefnRef,OGR_F_GetFieldIndex,要素基本信息操作OGR_F_Create,14,获取要素字段值,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,获取要素字段值FID:,15,设置要素字段值,FID:,OGR_F_SetFID,空间信息:,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,设置要素字段值FID:,16,几何图形,几何图形代表空间几何形状,是要素的空间信息,可以存在独立于要素之外的几何图形。,几何图形操作包括对构成几何图形的点进行增删改等操作、空间相互关系操作、坐标变换操作等,几何图形几何图形代表空间几何形状,是要素的空间信息,可以存在,17,几何图形基本信息操作,OGR_G_GetDimension,OGR_G_GetEnvelope,OGR_G_GetArea,OGR_G_Centroid,OGR_G_IsSimple,OGR_G_IsRing,几何图形基本信息操作OGR_G_GetDimension,18,几何图形坐标点操作,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,几何图形坐标点操作OGR_G_GetPointCount,19,复合几何图形操作,OGR_G_GetGeometryCount,OGR_G_GetGeometryRef,OGR_G_AddGeometry,OGR_G_RemoveGeometry,复合几何图形操作OGR_G_GetGeometryCount,20,空间关系判断操作,OGR_G_Intersects,OGR_G_Equals,OGR_G_Disjoint,OGR_G_Touches,OGR_G_Crosses,OGR_G_Within,OGR_G_Contains,OGR_G_Overlaps,空间关系判断操作OGR_G_Intersects,21,空间关系运算,OGR_G_GetBoundary,OGR_G_ConvexHull,OGR_G_Buffer,OGR_G_Intersection,OGR_G_Union,OGR_G_Difference,OGR_G_Distance,空间关系运算OGR_G_GetBoundary,22,坐标变换,OGR_G_Transform,OGR_G_TransformTo,坐标变换OGR_G_Transform,23,要素定义(FeatureDefn),要素定义对象(FeatureDefn)与图层相关联,是图层的重要属性,它确定了图层的结构,FeatureDefn主要由若干个字段构成,FeatureDefn 通常至少包含两个重要的字段:FID和Geometry。FID用长整数表示,Geometry是抽象类型。,要素定义(FeatureDefn)要素定义对象(Featu,24,要素定义操作,OGR_FD_Create,OGR_FD_Destroy,OGR_FD_GetName,OGR_FD_GetFieldCount,OGR_FD_GetFieldDefn,OGR_FD_GetFieldIndex,OGR_FD_AddFieldDefn,OGR_FD_SetGeomType,要素定义操作OGR_FD_Create,25,常用的空间数据类型,wkbPoint=1,wkbLineString=2,wkbPolygon=3,wkbMultiPoint=4,wkbMultiLineString=5,wkbMultiPolygon=6,wkbGeometryCollection=7,常用的空间数据类型wkbPoint=1,26,字段定义操作,字段定义用于定义图层的属性表结构,每个字段通常包含:名字、类型、宽度、小数位(实数类型)等信息,字段定义操作字段定义用于定义图层的属性表结构,27,字段定义操作,OGR_Fld_Create,OGR_Fld_SetName,OGR_Fld_GetNameRef,OGR_Fld_GetType,OGR_Fld_SetType,OGR_Fld_GetWidth,OGR_Fld_SetWidth,OGR_Fld_GetPrecision,OGR_Fld_SetPrecision,字段定义操作OGR_Fld_Create,28,/*Simple 32bit integer*/OFTInteger=0,/*List of 32bit integers*/OFTIntegerList=1,/*Double Precision floating point*/OFTReal=2,/*List of doubles*/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,/*Date*/OFTDate=9,/*Time*/OFTTime=10,/*Date and Time*/OFTDateTime=11,/*Simple 32bit integer*/,29,空间参照系统(OGRSpatialReference),遵循OGC的坐标转换规范(OpenGIS Coordinate Transformations specification),使用WKT格式描述坐标系统,调用PROJ.4实现投影变换,空
展开阅读全文