/******************************************************************************
* $Id$
*
* Project: libgeotiff
* Purpose: Include file related to geo_normalize.c containing Code to
* normalize PCS and other composite codes in a GeoTIFF file.
* Author: Frank Warmerdam, warmerda@home.com
*
******************************************************************************
* Copyright (c) 1999, Frank Warmerdam
*
* 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 GEO_NORMALIZE_H_INCLUDED
#define GEO_NORMALIZE_H_INCLUDED
#include <stdio.h>
#include "geotiff.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \file geo_normalize.h
*
* Include file for extended projection definition normalization api.
*/
#define MAX_GTIF_PROJPARMS 10
/**
* Holds a definition of a coordinate system in normalized form.
*/
typedef struct {
/** From GTModelTypeGeoKey tag. Can have the values ModelTypeGeographic
or ModelTypeProjected. */
short Model;
/** From ProjectedCSTypeGeoKey tag. For example PCS_NAD27_UTM_zone_3N.*/
short PCS;
/** From GeographicTypeGeoKey tag. For example GCS_WGS_84 or
GCS_Voirol_1875_Paris. Includes datum and prime meridian value. */
short GCS;
/** From ProjLinearUnitsGeoKey if found, or from GeogLinearUnitsGeoKey otherwise. For example Linear_Meter. */
short UOMLength;
/** One UOMLength = UOMLengthInMeters meters. */
double UOMLengthInMeters;
/** The angular units of the GCS. */
short UOMAngle;
/** One UOMAngle = UOMLengthInDegrees degrees. */
double UOMAngleInDegrees;
/** Datum from GeogGeodeticDatumGeoKey tag. For example Datum_WGS84 */
short Datum;
/** Prime meridian from GeogPrimeMeridianGeoKey. For example PM_Greenwich
or PM_Paris. */
short PM;
/** Decimal degrees of longitude between this prime meridian and
Greenwich. Prime meridians to the west of Greenwich are negative. */
double PMLongToGreenwich;
/** Ellipsoid identifier from GeogELlipsoidGeoKey. For example
Ellipse_Clarke_1866. */
short Ellipsoid;
/** The length of the semi major ellipse axis in meters. */
double SemiMajor;
/** The length of the semi minor ellipse axis in meters. */
double SemiMinor;
/* This #if is primary intended to maintain binary compatibility with older
versions of libgeotiff for MrSID binaries (for example). */
#if !defined(GEO_NORMALIZE_DISABLE_TOWGS84)
/** TOWGS84 transformation values (0/3/7) */
short TOWGS84Count;
/** TOWGS84 transformation values */
double TOWGS84[7];
#endif /* !defined(GEO_NORMALIZE_DISABLE_TOWGS84) */
/** Projection id from ProjectionGeoKey. For example Proj_UTM_11S. */
short ProjCode;
/** EPSG identifier for underlying projection method. From the EPSG
TRF_METHOD table. */
short Projection;
/** GeoTIFF identifier for underlying projection method. While some of
these values have corresponding values in EPSG (Projection field),
others do not. For example CT_TransverseMercator. */
short CTProjection;
/** Number of projection parameters in ProjParm and ProjParmId. */
int nParms;
/** Projection parameter value. The identify of this parameter
is established from the corresponding entry in ProjParmId. The
value will be measured in meters, or decimal degrees if it is a
linear or angular measure. */
double ProjParm[MAX_GTIF_PROJPARMS];
/** Projection parameter identifier. For example ProjFalseEastingGeoKey.
The value will be 0 for unused table entries. */
int ProjParmId[MAX_GTIF_PROJPARMS]; /* geokey identifier,
eg. ProjFalseEastingGeoKey*/
/** Special zone map system code (MapSys_UTM_South, MapSys_UTM_North,
MapSys_State_Plane or KvUserDefined if none apply. */
int MapSys;
/** UTM, or State Plane Zone number, zero if not known. */
int Zone;
/** Do we have any definition at all? 0 if no geokeys found */
int DefnSet;
} GTIFDefn;
int GTIF_DLL GTIFGetPCSInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nPCSCode, char **ppszEPSGName,
short *pnProjOp, short *pnUOMLengthCode,
short *pnGeogCS );
int GTIF_DLL GTIFGetPCSInfo( int nPCSCode, char **ppszEPSGName,
short *pnProjOp,
short *pnUOMLengthCode, short *pnGeogCS );
int GTIF_DLL GTIFGetProjTRFInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nProjTRFCode,
char **ppszProjTRFName,
short * pnProjMethod,
double * padfProjParms );
int GTIF_DLL GTIFGetProjTRFInfo( int nProjTRFCode,
char ** ppszProjTRFName,
short * pnProjMethod,
double * padfProjParms );
int GTIF_DLL GTIFGetGCSInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nGCSCode, char ** ppszName,
short * pnDatum, short * pnPM, short *pnUOMAngle );
int GTIF_DLL GTIFGetGCSInfo( int nGCSCode, char **ppszName,
short *pnDatum, short *pnPM, short *pnUOMAngle );
int GTIF_DLL GTIFGetDatumInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nDatumCode, char ** ppszName, short * pnEllipsoid );
int GTIF_DLL GTIFGetDatumInfo( int nDatumCode, char **ppszName,
short * pnEllipsoid );
int GTIF_DLL GTIFGetEllipsoidInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nEllipseCode, char ** ppszName,
double * pdfSemiMajor, double * pdfSemiMinor );
int GTIF_DLL GTIFGetEllipsoidInfo( int nEllipsoid, char ** ppszName,
double * pdfSemiMajor,
double * pdfSemiMinor );
int GTIF_DLL GTIFGetPMInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nPMCode, char ** ppszName, double *pdfOffset );
int GTIF_DLL GTIFGetPMInfo( int nPM, char **ppszName,
double * pdfLongToGreenwich );
double GTIF_DLL GTIFAngleStringToDD( const char *pszAngle, int nUOMAngle );
int GTIF_DLL GTIFGetUOMLengthInfoEx( void* ctx, /* The void* should be a PJ_CONTEXT* */
int nUOMLengthCode,
char **ppszUOMName,
double * pdfInMeters );
int GTIF_DLL GTIFGetUOMLengthInfo( int nUOMLengthCode,
char **ppszUOMName,
double * pdfInMeters );
int GTIF_DLL GTIFGetUOMAngl
clever101
- 粉丝: 6107
- 资源: 172
最新资源
- 【新增】-140 -医美医院-全岗位薪酬方案(实用篇).doc
- 【新增】-146 -制药公司薪酬制度.doc
- 【新增】-145 -证券薪酬管理制度.doc
- 【新增】-144 -证券薪酬管理手册.doc
- 【新增】-150 -中小公司薪资方案.doc
- 【新增】-147 -制药有限公司薪酬体系设计.doc
- 【新增】-148 -制造生产薪酬体系方案及对策.doc
- 【新增】-005 -餐饮店员工薪酬制度与考核方案.docx
- 【新增】-006 -餐饮公司薪酬管理体系.docx
- 【新增】-012 -传媒公司薪酬方案.docx
- 【新增】-021 -店铺人员薪酬方案.docx
- 【新增】-019 -电子商务公司薪资体系.docx
- 【新增】-017 -电商运营体系薪酬激励与绩效考核方案.docx
- 【新增】-022 -房产中介薪酬管理规定.docx
- 【新增】-029 -服装店门店薪酬绩效考核方案.docx
- 【新增】-034 -服装行业终端导购薪资方案.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈