DYT/Tool/3rdParty_x64/include/ogr_p.h
2024-11-22 23:19:31 +08:00

183 lines
8.2 KiB
C

/******************************************************************************
* $Id: ogr_p.h 33631 2016-03-04 06:28:09Z goatbar $
*
* Project: OpenGIS Simple Features Reference Implementation
* Purpose: Some private helper functions and stuff for OGR implementation.
* Author: Frank Warmerdam, warmerdam@pobox.com
*
******************************************************************************
* Copyright (c) 1999, Frank Warmerdam
* Copyright (c) 2008-2014, Even Rouault <even dot rouault at mines-paris dot org>
*
* 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_P_H_INCLUDED
#define OGR_P_H_INCLUDED
/* -------------------------------------------------------------------- */
/* Include the common portability library ... lets us do lots */
/* of stuff easily. */
/* -------------------------------------------------------------------- */
#include "cpl_string.h"
#include "cpl_conv.h"
#include "cpl_minixml.h"
#include "ogr_core.h"
#include "ogr_geometry.h"
#include "ogr_feature.h"
/* A default name for the default geometry column, instead of '' */
#define OGR_GEOMETRY_DEFAULT_NON_EMPTY_NAME "_ogr_geometry_"
#ifdef CPL_MSB
# define OGR_SWAP(x) (x == wkbNDR)
#else
# define OGR_SWAP(x) (x == wkbXDR)
#endif
/* PostGIS 1.X has non standard codes for the following geometry types */
#define POSTGIS15_CURVEPOLYGON 13 /* instead of 10 */
#define POSTGIS15_MULTICURVE 14 /* instead of 11 */
#define POSTGIS15_MULTISURFACE 15 /* instead of 12 */
/* Has been deprecated. Can only be used in very specific circumstances */
#ifdef GDAL_COMPILATION
#define wkb25DBitInternalUse 0x80000000
#endif
/* -------------------------------------------------------------------- */
/* helper function for parsing well known text format vector objects.*/
/* -------------------------------------------------------------------- */
#ifdef OGR_GEOMETRY_H_INCLUDED
#define OGR_WKT_TOKEN_MAX 64
const char CPL_DLL * OGRWktReadToken( const char * pszInput, char * pszToken );
const char CPL_DLL * OGRWktReadPoints( const char * pszInput,
OGRRawPoint **ppaoPoints,
double **ppadfZ,
int * pnMaxPoints,
int * pnReadPoints );
const char CPL_DLL * OGRWktReadPointsM( const char * pszInput,
OGRRawPoint **ppaoPoints,
double **ppadfZ,
double **ppadfM,
int * flags, /* geometry flags, are we expecting Z, M, or both; may change due to input */
int * pnMaxPoints,
int * pnReadPoints );
void CPL_DLL OGRMakeWktCoordinate( char *, double, double, double, int );
void CPL_DLL OGRMakeWktCoordinateM( char *, double, double, double, double, OGRBoolean, OGRBoolean );
#endif
void OGRFormatDouble( char *pszBuffer, int nBufferLen, double dfVal,
char chDecimalSep, int nPrecision = 15, char chConversionSpecifier = 'f' );
/* -------------------------------------------------------------------- */
/* Date-time parsing and processing functions */
/* -------------------------------------------------------------------- */
/* Internal use by OGR drivers only, CPL_DLL is just there in case */
/* they are compiled as plugins */
int CPL_DLL OGRGetDayOfWeek(int day, int month, int year);
int CPL_DLL OGRParseXMLDateTime( const char* pszXMLDateTime,
OGRField* psField );
int CPL_DLL OGRParseRFC822DateTime( const char* pszRFC822DateTime,
OGRField* psField );
char CPL_DLL * OGRGetRFC822DateTime(const OGRField* psField);
char CPL_DLL * OGRGetXMLDateTime(const OGRField* psField);
char CPL_DLL * OGRGetXML_UTF8_EscapedString(const char* pszString);
int OGRCompareDate( OGRField *psFirstTuple,
OGRField *psSecondTuple ); /* used by ogr_gensql.cpp and ogrfeaturequery.cpp */
/* General utility option processing. */
int CPL_DLL OGRGeneralCmdLineProcessor( int nArgc, char ***ppapszArgv, int nOptions );
/************************************************************************/
/* Support for special attributes (feature query and selection) */
/************************************************************************/
#define SPF_FID 0
#define SPF_OGR_GEOMETRY 1
#define SPF_OGR_STYLE 2
#define SPF_OGR_GEOM_WKT 3
#define SPF_OGR_GEOM_AREA 4
#define SPECIAL_FIELD_COUNT 5
extern const char* const SpecialFieldNames[SPECIAL_FIELD_COUNT];
#ifdef SWQ_H_INCLUDED_
extern const swq_field_type SpecialFieldTypes[SPECIAL_FIELD_COUNT];
#endif
/************************************************************************/
/* Some SRS related stuff, search in SRS data files. */
/************************************************************************/
OGRErr CPL_DLL OSRGetEllipsoidInfo( int, char **, double *, double *);
/* Fast atof function */
double OGRFastAtof(const char* pszStr);
OGRErr CPL_DLL OGRCheckPermutation(int* panPermutation, int nSize);
/* GML related */
OGRGeometry *GML2OGRGeometry_XMLNode( const CPLXMLNode *psNode,
int nPseudoBoolGetSecondaryGeometryOption,
int nRecLevel = 0,
int nSRSDimension = 0,
bool bIgnoreGSG = false,
bool bOrientation = true,
bool bFaceHoleNegative = false);
/************************************************************************/
/* PostGIS EWKB encoding */
/************************************************************************/
OGRGeometry CPL_DLL *OGRGeometryFromEWKB( GByte *pabyWKB, int nLength, int* pnSRID,
int bIsPostGIS1_EWKB );
OGRGeometry CPL_DLL *OGRGeometryFromHexEWKB( const char *pszBytea, int* pnSRID,
int bIsPostGIS1_EWKB );
char CPL_DLL * OGRGeometryToHexEWKB( OGRGeometry * poGeometry, int nSRSId,
int nPostGISMajor, int nPostGISMinor );
/************************************************************************/
/* WKB Type Handling encoding */
/************************************************************************/
OGRErr OGRReadWKBGeometryType( unsigned char * pabyData,
OGRwkbVariant wkbVariant,
OGRwkbGeometryType *eGeometryType );
/************************************************************************/
/* Other */
/************************************************************************/
void CPL_DLL OGRUpdateFieldType( OGRFieldDefn* poFDefn,
OGRFieldType eNewType,
OGRFieldSubType eNewSubType );
#endif /* ndef OGR_P_H_INCLUDED */