00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef OGR_P_H_INCLUDED
00032 #define OGR_P_H_INCLUDED
00033
00034
00035
00036
00037
00038
00039 #include "cpl_string.h"
00040 #include "cpl_conv.h"
00041 #include "cpl_minixml.h"
00042
00043 #include "ogr_core.h"
00044 #include "ogr_geometry.h"
00045
00046
00047 #define OGR_GEOMETRY_DEFAULT_NON_EMPTY_NAME "_ogr_geometry_"
00048
00049 #ifdef CPL_MSB
00050 # define OGR_SWAP(x) (x == wkbNDR)
00051 #else
00052 # define OGR_SWAP(x) (x == wkbXDR)
00053 #endif
00054
00055
00056
00057
00058
00059 #ifdef _OGR_GEOMETRY_H_INCLUDED
00060 #define OGR_WKT_TOKEN_MAX 64
00061
00062 const char CPL_DLL * OGRWktReadToken( const char * pszInput, char * pszToken );
00063
00064 const char CPL_DLL * OGRWktReadPoints( const char * pszInput,
00065 OGRRawPoint **ppaoPoints,
00066 double **ppadfZ,
00067 int * pnMaxPoints,
00068 int * pnReadPoints );
00069
00070 void CPL_DLL OGRMakeWktCoordinate( char *, double, double, double, int );
00071
00072 #endif
00073
00074 void OGRFormatDouble( char *pszBuffer, int nBufferLen, double dfVal, char chDecimalSep, int nPrecision = 15 );
00075
00076
00077
00078
00079
00080
00081
00082 int CPL_DLL OGRGetDayOfWeek(int day, int month, int year);
00083 int CPL_DLL OGRParseXMLDateTime( const char* pszXMLDateTime,
00084 int *pnYear, int *pnMonth, int *pnDay,
00085 int *pnHour, int *pnMinute, float* pfSecond, int *pnTZ);
00086 int CPL_DLL OGRParseRFC822DateTime( const char* pszRFC822DateTime,
00087 int *pnYear, int *pnMonth, int *pnDay,
00088 int *pnHour, int *pnMinute, int *pnSecond, int *pnTZ);
00089 char CPL_DLL * OGRGetRFC822DateTime(int year, int month, int day,
00090 int hour, int minute, int second, int TZ);
00091 char CPL_DLL * OGRGetXMLDateTime(int year, int month, int day,
00092 int hour, int minute, int second, int TZFlag);
00093 char CPL_DLL * OGRGetXML_UTF8_EscapedString(const char* pszString);
00094
00095 int OGRCompareDate( OGRField *psFirstTuple,
00096 OGRField *psSecondTuple );
00097
00098
00099 int CPL_DLL OGRGeneralCmdLineProcessor( int nArgc, char ***ppapszArgv, int nOptions );
00100
00101
00102
00103
00104 #define SPF_FID 0
00105 #define SPF_OGR_GEOMETRY 1
00106 #define SPF_OGR_STYLE 2
00107 #define SPF_OGR_GEOM_WKT 3
00108 #define SPF_OGR_GEOM_AREA 4
00109 #define SPECIAL_FIELD_COUNT 5
00110
00111 extern const char* SpecialFieldNames[SPECIAL_FIELD_COUNT];
00112
00113 #ifdef _SWQ_H_INCLUDED_
00114 extern const swq_field_type SpecialFieldTypes[SPECIAL_FIELD_COUNT];
00115 #endif
00116
00117
00118
00119
00120
00121 OGRErr CPL_DLL OSRGetEllipsoidInfo( int, char **, double *, double *);
00122
00123
00124 double OGRFastAtof(const char* pszStr);
00125
00126 OGRErr CPL_DLL OGRCheckPermutation(int* panPermutation, int nSize);
00127
00128
00129
00130 OGRGeometry *GML2OGRGeometry_XMLNode( const CPLXMLNode *psNode,
00131 int bGetSecondaryGeometryOption,
00132 int nRecLevel = 0,
00133 int bIgnoreGSG = FALSE,
00134 int bOrientation = TRUE,
00135 int bFaceHoleNegative = FALSE );
00136
00137
00138
00139
00140
00141 OGRGeometry CPL_DLL *OGRGeometryFromEWKB( GByte *pabyWKB, int nLength, int* pnSRID );
00142 OGRGeometry CPL_DLL *OGRGeometryFromHexEWKB( const char *pszBytea, int* pnSRID );
00143 char CPL_DLL * OGRGeometryToHexEWKB( OGRGeometry * poGeometry, int nSRSId );
00144
00145
00146
00147
00148
00149 OGRErr OGRReadWKBGeometryType( unsigned char * pabyData, OGRwkbGeometryType *eGeometryType, OGRBoolean *b3D );
00150
00151 #endif