?? ogr_oci.h
字號:
/****************************************************************************** * $Id: ogr_oci.h 10646 2007-01-18 02:38:10Z warmerdam $ * * Project: Oracle Spatial Driver * Purpose: Oracle Spatial OGR Driver Declarations. * Author: Frank Warmerdam <warmerdam@pobox.com> * ****************************************************************************** * Copyright (c) 2002, Frank Warmerdam <warmerdam@pobox.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#ifndef _OGR_OCI_H_INCLUDED#define _OGR_OCI_H_INCLUDED#include "ogrsf_frmts.h"#include "oci.h"#include "cpl_error.h"/* -------------------------------------------------------------------- *//* Low level Oracle spatial declarations. *//* -------------------------------------------------------------------- */#define TYPE_OWNER "MDSYS"#define SDO_GEOMETRY "MDSYS.SDO_GEOMETRY"typedef struct { OCINumber x; OCINumber y; OCINumber z;} sdo_point_type;typedef OCIArray sdo_elem_info_array;typedef OCIArray sdo_ordinate_array;typedef struct{ OCINumber sdo_gtype; OCINumber sdo_srid; sdo_point_type sdo_point; OCIArray *sdo_elem_info; OCIArray *sdo_ordinates;} SDO_GEOMETRY_TYPE;typedef struct{ OCIInd _atomic; OCIInd x; OCIInd y; OCIInd z;} sdo_point_type_ind;typedef struct{ OCIInd _atomic; OCIInd sdo_gtype; OCIInd sdo_srid; sdo_point_type_ind sdo_point; OCIInd sdo_elem_info; OCIInd sdo_ordinates;} SDO_GEOMETRY_ind;#define ORA_GTYPE_MATCH(a,b) ( ((a) % 1000) == ((b) % 1000))#define ORA_GTYPE_UNKNOWN 0#define ORA_GTYPE_POINT 1#define ORA_GTYPE_LINESTRING 2#define ORA_GTYPE_POLYGON 3#define ORA_GTYPE_COLLECTION 4#define ORA_GTYPE_MULTIPOINT 5#define ORA_GTYPE_MULTILINESTRING 6#define ORA_GTYPE_MULTIPOLYGON 7/************************************************************************//* OGROCISession *//************************************************************************/class CPL_DLL OGROCISession { public: OCIEnv *hEnv; OCIError *hError; OCISvcCtx *hSvcCtx; OCIDescribe*hDescribe; OCIType *hGeometryTDO; OCIType *hOrdinatesTDO; OCIType *hElemInfoTDO; char *pszUserid; char *pszPassword; char *pszDatabase; public: OGROCISession(); virtual ~OGROCISession(); int EstablishSession( const char *pszUserid, const char *pszPassword, const char *pszDatabase ); int Failed( sword nStatus, const char *pszFunction = NULL ); CPLErr GetParmInfo( OCIParam *hParmDesc, OGRFieldDefn *poOGRDefn, ub2 *pnOCIType, ub4 *pnOCILen ); void CleanName( char * ); OCIType *PinTDO( const char * ); private: };OGROCISession CPL_DLL*OGRGetOCISession( const char *pszUserid, const char *pszPassword, const char *pszDatabase );/************************************************************************//* OGROCIStatement *//************************************************************************/class CPL_DLL OGROCIStatement { public: OGROCIStatement( OGROCISession * ); virtual ~OGROCIStatement(); OCIStmt *GetStatement() { return hStatement; } CPLErr BindScalar( const char *pszPlaceName, void *pData, int nDataLen, int nSQLType, sb2 *paeInd = NULL ); CPLErr BindObject( const char *pszPlaceName, void *pahObject, OCIType *hTDO, void **papIndicators ); char *pszCommandText; CPLErr Prepare( const char * pszStatement ); CPLErr Execute( const char * pszStatement, int nMode = -1 ); void Clean(); OGRFeatureDefn *GetResultDefn() { return poDefn; } char **SimpleFetchRow(); private: OGROCISession *poSession; OCIStmt *hStatement; OGRFeatureDefn*poDefn; char **papszCurColumn; char **papszCurImage; sb2 *panCurColumnInd; int nRawColumnCount; int *panFieldMap;};/************************************************************************//* OGROCIStringBuf *//************************************************************************/class OGROCIStringBuf { char *pszString; int nLen; int nBufSize; void UpdateEnd();public: OGROCIStringBuf(); ~OGROCIStringBuf(); void MakeRoomFor( int ); void Append( const char * ); void Appendf( int nMax, const char *pszFormat, ... ); char *StealString(); char GetLast(); char *GetEnd() { UpdateEnd(); return pszString + nLen; } char *GetString() { return pszString; } void Clear();};/************************************************************************//* OGROCILayer *//************************************************************************/class OGROCIDataSource; class OGROCILayer : public OGRLayer{ protected: OGRFeatureDefn *poFeatureDefn; int iNextShapeId; OGROCIDataSource *poDS; char *pszQueryStatement; int nResultOffset; OGROCIStatement *poStatement; int ExecuteQuery( const char * ); SDO_GEOMETRY_TYPE *hLastGeom; SDO_GEOMETRY_ind *hLastGeomInd; char *pszGeomName; int iGeomColumn; char *pszFIDName; int iFIDColumn; OGRGeometry *TranslateGeometry(); OGRGeometry *TranslateGeometryElement( int nGType, int nDimension, int nEType, int nInterpretation, int nStartOrdinal, int nOrdCount); int GetOrdinalPoint( int iOrdinal, int nDimension, double *pdfX, double *pdfY, double *pdfZ ); public: OGROCILayer(); virtual ~OGROCILayer(); virtual void ResetReading(); virtual OGRFeature *GetNextRawFeature(); virtual OGRFeature *GetNextFeature(); OGRFeatureDefn * GetLayerDefn() { return poFeatureDefn; } virtual int TestCapability( const char * ); virtual const char *GetFIDColumn(); virtual const char *GetGeometryColumn(); int LookupTableSRID();};/************************************************************************//* OGROCIWritableLayer *//************************************************************************/class OGROCIWritableLayer : public OGROCILayer{protected: int nDimension; int nSRID;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -