[liblas] 08/15: Drop patch update_gdal_geotiff.patch, included upstream.

Bas Couwenberg sebastic at xs4all.nl
Sun Aug 3 12:17:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

sebastic-guest pushed a commit to branch experimental
in repository liblas.

commit e4f63df8b972ee9fd7a30adc79e1eeb4e73229e4
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Aug 3 12:20:08 2014 +0200

    Drop patch update_gdal_geotiff.patch, included upstream.
---
 debian/patches/series                    |    1 -
 debian/patches/update_gdal_geotiff.patch | 1796 ------------------------------
 2 files changed, 1797 deletions(-)

diff --git a/debian/patches/series b/debian/patches/series
index ae695a2..7a58779 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
 fix_library_search
-update_gdal_geotiff.patch
diff --git a/debian/patches/update_gdal_geotiff.patch b/debian/patches/update_gdal_geotiff.patch
deleted file mode 100644
index 1e1026f..0000000
--- a/debian/patches/update_gdal_geotiff.patch
+++ /dev/null
@@ -1,1796 +0,0 @@
-From: Howard Butler <hobu.inc at gmail.com>
-Subject: [PATCH] update GDAL's GeoTIFF stuff to something more current
-Date: Tue, 10 Jun 2014 13:48:51 -0500
-
-Patch cherry-picked from upstream to prepare the way for the GDAL transition to 1.11.0.
-This commit will be part of LibLAS 1.8, but it may not be ready for a while, so it is
-being backported to LibLAS 1.7.
-Relevant Debian GIS Team discussion here:
-https://lists.debian.org/debian-gis/2014/07/msg00049.html
-
-Origin: upstream, https://github.com/libLAS/libLAS/commit/5a3361ea12ad8c946c6675b6f3e7370dd426a408
-Origin: upstream, https://github.com/libLAS/libLAS/commit/43e841f21fe90b1a35aa127c62e0ea1a96eb2df9
-
----
- src/gt_wkt_srs.cpp        | 813 ++++++++++++++++++++++++++++++----------------
- src/gt_wkt_srs.h          |   4 +-
- src/gt_wkt_srs_for_gdal.h |  18 +-
- src/tifvsi.cpp            |  55 ++--
- src/tifvsi.h              |   5 +-
- 5 files changed, 590 insertions(+), 305 deletions(-)
-
---- liblas.orig/src/gt_wkt_srs.cpp
-+++ liblas/src/gt_wkt_srs.cpp
-@@ -1,15 +1,15 @@
- /******************************************************************************
-- * $Id: gt_wkt_srs.cpp 21928 2011-03-11 03:31:28Z warmerdam $
-+ * $Id$
-  *
-  * Project:  GeoTIFF Driver
-  * Purpose:  Implements translation between GeoTIFF normalized projection
-- *           definitions and OpenGIS WKT SRS format.  This code is
-- *           deliberately GDAL free, and it is intended to be moved into
-- *           libgeotiff someday if possible.
-+ *           definitions and OpenGIS WKT SRS format.  This code is intended to
-+ *           be moved into libgeotiff someday if possible.
-  * Author:   Frank Warmerdam, warmerdam at 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"),
-@@ -30,9 +30,10 @@
-  * DEALINGS IN THE SOFTWARE.
-  ****************************************************************************/
- 
--#include "cpl_serv.h"
--#include "geo_tiffp.h"
--#define CPL_ERROR_H_INCLUDED
-+#include "cpl_error.h"
-+#include "cpl_conv.h"
-+#include "cpl_csv.h"
-+#include "gdal_csv.h"
- 
- #include "geovalues.h"
- #include "ogr_spatialref.h"
-@@ -44,60 +45,27 @@
- #include "gt_wkt_srs_for_gdal.h"
- #include "gt_citation.h"
- 
--CPL_CVSID("$Id: gt_wkt_srs.cpp 21928 2011-03-11 03:31:28Z warmerdam $")
-+CPL_CVSID("$Id$")
- 
--CPL_C_START
--#ifndef CPL_SERV_H_INTERNAL
--/* Make VSIL_STRICT_ENFORCE active in DEBUG builds */
--#ifdef DEBUG
--#define VSIL_STRICT_ENFORCE
--#endif
-+#define ProjLinearUnitsInterpCorrectGeoKey   3059
- 
--#ifdef VSIL_STRICT_ENFORCE
--typedef struct _VSILFILE VSILFILE;
--#else
--typedef FILE VSILFILE;
-+#ifndef CT_HotineObliqueMercatorAzimuthCenter
-+#  define CT_HotineObliqueMercatorAzimuthCenter 9815
- #endif
- 
--// ensure compatability with older libgeotiffs. 
- #if !defined(GTIFAtof)
--#  define GTIFAtof atof
-+#  define GTIFAtof CPLAtof
- #endif
- 
--int CPL_DLL VSIFCloseL( VSILFILE * );
--int CPL_DLL VSIUnlink( const char * );
--VSILFILE CPL_DLL *VSIFileFromMemBuffer( const char *pszFilename,
--                                    GByte *pabyData, 
--                                    GUIntBig nDataLength,
--                                    int bTakeOwnership );
--GByte CPL_DLL *VSIGetMemFileBuffer( const char *pszFilename, 
--                                    GUIntBig *pnDataLength, 
--                                    int bUnlinkAndSeize );
--
--/* Those stuff are redefined in external libgeotiff cpl_serv.h */
--/* as macros. Let's use GDAL functions instead */
--/* E.Rouault : I'm wondering why we just don't #define CPL_SERV_H_INCLUDED */
--/* at the beginning of this file to avoid cpl_serv.h to be used at all ??? */
--
--#undef CSVReadParseLine
--char CPL_DLL  **CSVReadParseLine( FILE *fp);
--#undef CSLDestroy
--void CPL_DLL CPL_STDCALL CSLDestroy(char **papszStrList);
--#undef VSIFree
--void CPL_DLL    VSIFree( void * );
--#undef CPLFree
--#define CPLFree VSIFree
--#undef CPLMalloc
--void CPL_DLL *CPLMalloc( size_t );
--#undef CPLCalloc
--void CPL_DLL *CPLCalloc( size_t, size_t );
--#undef CPLStrdup
--char CPL_DLL *CPLStrdup( const char * );
--
--#endif /* CPL_SERV_H_INTERNAL */
-+CPL_C_START
-+void CPL_DLL LibgeotiffOneTimeInit();
-+void    LibgeotiffOneTimeCleanupMutex();
- 
- CPL_C_END
- 
-+// To remind myself not to use CPLString in this file!
-+#define CPLString Please_do_not_use_CPLString_in_this_file
-+
- static const char *papszDatumEquiv[] =
- {
-     "Militar_Geographische_Institut",
-@@ -119,6 +87,40 @@
- #endif
- 
- /************************************************************************/
-+/*                       LibgeotiffOneTimeInit()                        */
-+/************************************************************************/
-+
-+static void* hMutex = NULL;
-+
-+void LibgeotiffOneTimeInit() 
-+{
-+    static int bOneTimeInitDone = FALSE;
-+    CPLMutexHolder oHolder( &hMutex);
-+
-+    if (bOneTimeInitDone)
-+        return;
-+
-+    bOneTimeInitDone = TRUE;
-+
-+    // If linking with an external libgeotiff we hope this will call the
-+    // SetCSVFilenameHook() in libgeotiff, not the one in gdal/port!
-+    // SetCSVFilenameHook( GDALDefaultCSVFilename );
-+}
-+
-+/************************************************************************/
-+/*                   LibgeotiffOneTimeCleanupMutex()                    */
-+/************************************************************************/
-+
-+void LibgeotiffOneTimeCleanupMutex() 
-+{
-+    if( hMutex != NULL )
-+    {
-+        CPLDestroyMutex(hMutex);
-+        hMutex = NULL;
-+    }
-+}
-+
-+/************************************************************************/
- /*                       GTIFToCPLRecyleString()                        */
- /*                                                                      */
- /*      This changes a string from the libgeotiff heap to the GDAL      */
-@@ -207,11 +209,11 @@
- /************************************************************************/
- 
- /* For example:
--   GTCitationGeoKey (Ascii,215): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 21928 $ $Date: 2011-03-10 22:31:28 -0500 (Thu, 10 Mar 2011) $\nProjection Name = UTM\nUnits = meters\nGeoTIFF Units = meters"
-+   GTCitationGeoKey (Ascii,215): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision$ $Date$\nProjection Name = UTM\nUnits = meters\nGeoTIFF Units = meters"
- 
--   GeogCitationGeoKey (Ascii,267): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 21928 $ $Date: 2011-03-10 22:31:28 -0500 (Thu, 10 Mar 2011) $\nUnable to match Ellipsoid (Datum) to a GeographicTypeGeoKey value\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
-+   GeogCitationGeoKey (Ascii,267): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision$ $Date$\nUnable to match Ellipsoid (Datum) to a GeographicTypeGeoKey value\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
- 
--   PCSCitationGeoKey (Ascii,214): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 21928 $ $Date: 2011-03-10 22:31:28 -0500 (Thu, 10 Mar 2011) $\nUTM Zone 10N\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
-+   PCSCitationGeoKey (Ascii,214): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision$ $Date$\nUTM Zone 10N\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
-  
- */
- 
-@@ -259,6 +261,11 @@
-     OGRSpatialReference	oSRS;
- 
- /* -------------------------------------------------------------------- */
-+/*      Make sure we have hooked CSVFilename().                         */
-+/* -------------------------------------------------------------------- */
-+    LibgeotiffOneTimeInit();
-+
-+/* -------------------------------------------------------------------- */
- /*  Handle non-standard coordinate systems where GTModelTypeGeoKey      */
- /*  is not defined, but ProjectedCSTypeGeoKey is defined (ticket #3019) */
- /* -------------------------------------------------------------------- */
-@@ -338,9 +345,8 @@
-             GTIFKeyGet( hGTIF, GeogCitationGeoKey, szName, 
-                         0, sizeof(szName) );
- 
--#if GDAL_VERSION_NUM >=1900
-         oSRS.SetGeocCS( szName );
--#endif
-+
-         char	*pszUnitsName = NULL;
-           
-         GTIFGetUOMLengthInfo( psDefn->UOMLength, &pszUnitsName, NULL );
-@@ -357,6 +363,87 @@
-     }
-     
- /* -------------------------------------------------------------------- */
-+/*      #3901: In libgeotiff 1.3.0 and earlier we incorrectly           */
-+/*      interpreted linear projection parameter geokeys (false          */
-+/*      easting/northing) as being in meters instead of the             */
-+/*      coordinate system of the file.   The following code attempts    */
-+/*      to provide mechanisms for fixing the issue if we are linked     */
-+/*      with an older version of libgeotiff.                            */
-+/* -------------------------------------------------------------------- */
-+    int iParm;
-+    const char *pszLinearUnits = 
-+        CPLGetConfigOption( "GTIFF_LINEAR_UNITS", "DEFAULT" );
-+
-+#if LIBGEOTIFF_VERSION <= 1300
-+    if( EQUAL(pszLinearUnits,"DEFAULT") && psDefn->Projection == KvUserDefined )
-+    {
-+        for( iParm = 0; iParm < psDefn->nParms; iParm++ )
-+        {
-+            switch( psDefn->ProjParmId[iParm] )
-+            {
-+              case ProjFalseEastingGeoKey:
-+              case ProjFalseNorthingGeoKey:
-+              case ProjFalseOriginEastingGeoKey:
-+              case ProjFalseOriginNorthingGeoKey:
-+              case ProjCenterEastingGeoKey:
-+              case ProjCenterNorthingGeoKey:
-+                if( psDefn->UOMLengthInMeters != 0 
-+                    && psDefn->UOMLengthInMeters != 1.0 )
-+                {
-+                    psDefn->ProjParm[iParm] *= psDefn->UOMLengthInMeters;
-+                    CPLDebug( "GTIFF", "converting geokey to meters to fix bug in old libgeotiff" );
-+                }
-+                break;
-+
-+              default:
-+                break;
-+            }
-+        }
-+    }
-+#endif /* LIBGEOTIFF_VERSION <= 1300 */
-+
-+/* -------------------------------------------------------------------- */
-+/*      #3901: If folks have broken GeoTIFF files generated with        */
-+/*      older versions of GDAL+libgeotiff, then they may need a         */
-+/*      hack to allow them to be read properly.  This is that           */
-+/*      hack.  We basically try to undue the conversion applied by      */
-+/*      libgeotiff to meters (or above) to simulate the old             */
-+/*      behavior.                                                       */
-+/* -------------------------------------------------------------------- */
-+    short bLinearUnitsMarkedCorrect = FALSE;
-+    
-+    GTIFKeyGet(hGTIF, (geokey_t) ProjLinearUnitsInterpCorrectGeoKey, 
-+               &bLinearUnitsMarkedCorrect, 0, 1);
-+
-+    if( EQUAL(pszLinearUnits,"BROKEN") 
-+        && psDefn->Projection == KvUserDefined 
-+        && !bLinearUnitsMarkedCorrect )
-+    {
-+        for( iParm = 0; iParm < psDefn->nParms; iParm++ )
-+        {
-+            switch( psDefn->ProjParmId[iParm] )
-+            {
-+              case ProjFalseEastingGeoKey:
-+              case ProjFalseNorthingGeoKey:
-+              case ProjFalseOriginEastingGeoKey:
-+              case ProjFalseOriginNorthingGeoKey:
-+              case ProjCenterEastingGeoKey:
-+              case ProjCenterNorthingGeoKey:
-+                if( psDefn->UOMLengthInMeters != 0 
-+                    && psDefn->UOMLengthInMeters != 1.0 )
-+                {
-+                    psDefn->ProjParm[iParm] /= psDefn->UOMLengthInMeters;
-+                    CPLDebug( "GTIFF", "converting geokey to accomodate old broken file due to GTIFF_LINEAR_UNITS=BROKEN setting." );
-+                }
-+                break;
-+
-+              default:
-+                break;
-+            }
-+        }
-+    }
-+
-+/* -------------------------------------------------------------------- */
- /*      If this is a projected SRS we set the PROJCS keyword first      */
- /*      to ensure that the GEOGCS will be a child.                      */
- /* -------------------------------------------------------------------- */
-@@ -482,6 +569,7 @@
-     dfSemiMajor = psDefn->SemiMajor;
-     if( dfSemiMajor == 0.0 )
-     {
-+        CPLFree(pszSpheroidName);
-         pszSpheroidName = CPLStrdup("unretrievable - using WGS84");
-         dfSemiMajor = SRS_WGS84_SEMIMAJOR;
-         dfInvFlattening = SRS_WGS84_INVFLATTENING;
-@@ -499,7 +587,7 @@
-     if(!pszGeogName || strlen(pszGeogName) == 0)
-     {
-         CPLFree(pszGeogName);
--        pszGeogName = CPLStrdup( pszDatumName );
-+        pszGeogName = CPLStrdup( pszDatumName ? pszDatumName : "unknown" );
-     }
- 
-     if(aUnitGot)
-@@ -613,7 +701,7 @@
-             break;
- 
-           case CT_Stereographic:
--            oSRS.SetOS( adfParm[0], adfParm[1],
-+            oSRS.SetStereographic( adfParm[0], adfParm[1],
-                         adfParm[4],
-                         adfParm[5], adfParm[6] );
-             break;
-@@ -625,6 +713,13 @@
-                          adfParm[5], adfParm[6] );
-             break;
-         
-+          case CT_HotineObliqueMercatorAzimuthCenter:
-+            oSRS.SetHOMAC( adfParm[0], adfParm[1],
-+                           adfParm[2], adfParm[3],
-+                           adfParm[4],
-+                           adfParm[5], adfParm[6] );
-+            break;
-+        
-           case CT_EquidistantConic: 
-             oSRS.SetEC( adfParm[0], adfParm[1],
-                         adfParm[2], adfParm[3],
-@@ -788,6 +883,16 @@
-         }
- 
- /* -------------------------------------------------------------------- */
-+/*      This addresses another case where the EGM96 Vertical Datum code */
-+/*      is mis-used as a Vertical CS code (#4922)                       */
-+/* -------------------------------------------------------------------- */
-+        if( verticalCSType == 5171 )
-+        {
-+            verticalDatum = 5171;
-+            verticalCSType = 5773;
-+        }
-+ 
-+/* -------------------------------------------------------------------- */
- /*      Somewhat similarly, codes 5001 to 5033 were treated as          */
- /*      vertical coordinate systems based on ellipsoidal heights.       */
- /*      We use the corresponding 2d geodetic datum as the vertical      */
-@@ -948,7 +1053,7 @@
-             dfFactorC = GTIFAtof(
-                 CSVGetField( pszFilename, 
-                              "uom_code", szSearchKey, CC_Integer,
--                             "factor_b" ));
-+                             "factor_c" ));
-             if( dfFactorB != 0.0 && dfFactorC != 0.0 )
-                 sprintf( szInMeters, "%.16g", dfFactorB / dfFactorC );
-             else
-@@ -1147,7 +1252,11 @@
-     double	dfLinearUOM = poSRS->GetLinearUnits( &pszLinearUOMName );
-     int         nUOMLengthCode = 9001; /* meters */
- 
--    if( (pszLinearUOMName != NULL
-+    if( poSRS->GetAuthorityName("PROJCS|UNIT") != NULL 
-+        && EQUAL(poSRS->GetAuthorityName("PROJCS|UNIT"),"EPSG")
-+        && poSRS->GetAttrNode( "PROJCS|UNIT" ) != poSRS->GetAttrNode("GEOGCS|UNIT") )
-+        nUOMLengthCode = atoi(poSRS->GetAuthorityCode("PROJCS|UNIT"));
-+    else if( (pszLinearUOMName != NULL
-          && EQUAL(pszLinearUOMName,SRS_UL_FOOT))
-         || fabs(dfLinearUOM-GTIFAtof(SRS_UL_FOOT_CONV)) < 0.0000001 )
-         nUOMLengthCode = 9002; /* international foot */
-@@ -1181,13 +1290,11 @@
-                    ModelTypeProjected);
-         GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1, nPCS );
-     }
--#if GDAL_VERSION_NUM >=1900
-     else if( poSRS->IsGeocentric() )
-     {
-         GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1, 
-                    ModelTypeGeocentric );
-     }
--#endif
-     else if( pszProjection == NULL )
-     {
-         if( poSRS->IsGeographic() )
-@@ -1197,15 +1304,15 @@
-     }
-     else if( EQUAL(pszProjection,SRS_PT_ALBERS_CONIC_EQUAL_AREA) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_AlbersEqualArea );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_AlbersEqualArea );
- 
-         GTIFKeySet(psGTIF, ProjStdParallelGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_1, 0.0 ) );
-@@ -1220,17 +1327,17 @@
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
- 
-     else if( poSRS->GetUTMZone() != 0 )
-     {
-         int		bNorth, nZone, nProjection;
- 
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
- 
-         nZone = poSRS->GetUTMZone( &bNorth );
-@@ -1275,15 +1382,15 @@
- 
-     else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_TransverseMercator );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_TransverseMercator );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1295,23 +1402,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_TransvMercator_SouthOriented );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_TransvMercator_SouthOriented );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1323,25 +1430,25 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_MERCATOR_2SP) 
-              || EQUAL(pszProjection,SRS_PT_MERCATOR_1SP) )
- 
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Mercator );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Mercator );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1353,23 +1460,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_OBLIQUE_STEREOGRAPHIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_ObliqueStereographic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_ObliqueStereographic );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1381,23 +1488,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_STEREOGRAPHIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Stereographic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Stereographic );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1409,23 +1516,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_POLAR_STEREOGRAPHIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_PolarStereographic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_PolarStereographic );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1437,23 +1544,57 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_HOTINE_OBLIQUE_MERCATOR) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+                   ModelTypeProjected);
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+                   KvUserDefined );
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+                   KvUserDefined );
-+
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_ObliqueMercator );
-+
-+        GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-+
-+        GTIFKeySet(psGTIF, ProjCenterLongGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-+        
-+        GTIFKeySet(psGTIF, ProjAzimuthAngleGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetNormProjParm( SRS_PP_AZIMUTH, 0.0 ) );
-+        
-+        GTIFKeySet(psGTIF, ProjRectifiedGridAngleGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetNormProjParm( SRS_PP_RECTIFIED_GRID_ANGLE, 0.0 ) );
-+        
-+        GTIFKeySet(psGTIF, ProjScaleAtCenterGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-+        
-+        GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+        
-+        GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+    }
-+    
-+    else if( EQUAL(pszProjection,SRS_PT_HOTINE_OBLIQUE_MERCATOR_AZIMUTH_CENTER) )
-+    {
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_ObliqueMercator );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_HotineObliqueMercatorAzimuthCenter );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-@@ -1471,23 +1612,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_CASSINI_SOLDNER) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_CassiniSoldner );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_CassiniSoldner );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1496,23 +1637,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_EQUIDISTANT_CONIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_EquidistantConic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_EquidistantConic );
- 
-         GTIFKeySet(psGTIF, ProjStdParallel1GeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_1, 0.0 ) );
-@@ -1527,23 +1668,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_POLYCONIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Polyconic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Polyconic );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1555,23 +1696,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_AZIMUTHAL_EQUIDISTANT) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_AzimuthalEquidistant );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_AzimuthalEquidistant );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-@@ -1580,23 +1721,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_MILLER_CYLINDRICAL) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_MillerCylindrical );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_MillerCylindrical );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-@@ -1605,23 +1746,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_EQUIRECTANGULAR) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Equirectangular );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Equirectangular );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1633,23 +1774,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_1, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_GNOMONIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Gnomonic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Gnomonic );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1658,23 +1799,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_LambertAzimEqualArea );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_LambertAzimEqualArea );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-@@ -1683,23 +1824,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_ORTHOGRAPHIC) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Orthographic );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Orthographic );
- 
-         GTIFKeySet(psGTIF, ProjCenterLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1708,23 +1849,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_NEW_ZEALAND_MAP_GRID) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_NewZealandMapGrid );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_NewZealandMapGrid );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1733,89 +1874,89 @@
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_ROBINSON) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Robinson );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Robinson );
- 
-         GTIFKeySet(psGTIF, ProjCenterLongGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_SINUSOIDAL) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_Sinusoidal );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_Sinusoidal );
- 
-         GTIFKeySet(psGTIF, ProjCenterLongGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_VANDERGRINTEN) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_VanDerGrinten );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_VanDerGrinten );
- 
-         GTIFKeySet(psGTIF, ProjCenterLongGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_ALBERS_CONIC_EQUAL_AREA) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_AlbersEqualArea );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_AlbersEqualArea );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_CENTER, 0.0 ) );
-@@ -1830,23 +1971,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_2, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_LambertConfConic_2SP );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_LambertConfConic_2SP );
- 
-         GTIFKeySet(psGTIF, ProjFalseOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1861,23 +2002,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_2, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseOriginEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseOriginNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
-     
-     else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_LambertConfConic_1SP );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_LambertConfConic_1SP );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLatGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0 ) );
-@@ -1889,23 +2030,23 @@
-                    poSRS->GetNormProjParm( SRS_PP_SCALE_FACTOR, 1.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
- 
-     else if( EQUAL(pszProjection,SRS_PT_CYLINDRICAL_EQUAL_AREA) )
-     {
--	GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, GTModelTypeGeoKey, TYPE_SHORT, 1,
-                    ModelTypeProjected);
--	GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectedCSTypeGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
--	GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-+        GTIFKeySet(psGTIF, ProjectionGeoKey, TYPE_SHORT, 1,
-                    KvUserDefined );
- 
--	GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
--		   CT_CylindricalEqualArea );
-+        GTIFKeySet(psGTIF, ProjCoordTransGeoKey, TYPE_SHORT, 1, 
-+                   CT_CylindricalEqualArea );
- 
-         GTIFKeySet(psGTIF, ProjNatOriginLongGeoKey, TYPE_DOUBLE, 1,
-                    poSRS->GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ) );
-@@ -1914,10 +2055,10 @@
-                    poSRS->GetNormProjParm( SRS_PP_STANDARD_PARALLEL_1, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ) );
-         
-         GTIFKeySet(psGTIF, ProjFalseNorthingGeoKey, TYPE_DOUBLE, 1,
--                   poSRS->GetNormProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-+                   poSRS->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ) );
-     }
- 
-     else
-@@ -1927,7 +2068,11 @@
- 
-     // Note that VERTCS is an ESRI "spelling" of VERT_CS so we assume if
-     // we find it that we should try to treat this as a PE string.
--    if( bWritePEString || poSRS->GetAttrValue("VERTCS") != NULL )
-+    bWritePEString |= (poSRS->GetAttrValue("VERTCS") != NULL);
-+
-+    if( bWritePEString 
-+        && CSLTestBoolean( CPLGetConfigOption("GTIFF_ESRI_CITATION",
-+                                              "YES") ) )
-     {
-         /* Anyhing we can't map, we store as an ESRI PE string with a citation key */
-         char *pszPEString = NULL;
-@@ -1950,10 +2095,26 @@
-     }
-     
- /* -------------------------------------------------------------------- */
-+/*      Is there a false easting/northing set?  If so, write out a      */
-+/*      special geokey tag to indicate that GDAL has written these      */
-+/*      with the proper interpretation of the linear units.             */
-+/* -------------------------------------------------------------------- */
-+    double dfFE = 0.0, dfFN = 0.0;
-+
-+    if( (GTIFKeyGet(psGTIF, ProjFalseEastingGeoKey, &dfFE, 0, 1)
-+         || GTIFKeyGet(psGTIF, ProjFalseNorthingGeoKey, &dfFN, 0, 1)
-+         || GTIFKeyGet(psGTIF, ProjFalseOriginEastingGeoKey, &dfFE, 0, 1)
-+         || GTIFKeyGet(psGTIF, ProjFalseOriginNorthingGeoKey, &dfFN, 0, 1))
-+        && (dfFE != 0.0 || dfFN != 0.0) 
-+        && nUOMLengthCode != 9001 )
-+    {
-+        GTIFKeySet(psGTIF, (geokey_t) ProjLinearUnitsInterpCorrectGeoKey, 
-+                   TYPE_SHORT, 1, (short) 1 );
-+    }
-+
-+/* -------------------------------------------------------------------- */
- /*      Write linear units information.                                 */
- /* -------------------------------------------------------------------- */
--#if GDAL_VERSION_NUM >=1900
--
-     if( poSRS->IsGeocentric() )
-     {
-         GTIFKeySet(psGTIF, GeogLinearUnitsGeoKey, TYPE_SHORT, 1, 
-@@ -1962,9 +2123,7 @@
-             GTIFKeySet( psGTIF, GeogLinearUnitSizeGeoKey, TYPE_DOUBLE, 1, 
-                         dfLinearUOM);
-     }
--    else 
--#endif
--    if( !poSRS->IsGeographic() )
-+    else if( !poSRS->IsGeographic() )
-     {
-         GTIFKeySet(psGTIF, ProjLinearUnitsGeoKey, TYPE_SHORT, 1, 
-                    nUOMLengthCode );
-@@ -1973,8 +2132,15 @@
-                         dfLinearUOM);
- 
-         /* if linear units name is available and user defined, store it as citation */
--        if(!peStrStored && nUOMLengthCode == KvUserDefined && pszLinearUOMName && strlen(pszLinearUOMName)>0)
-+        if(!peStrStored 
-+           && nUOMLengthCode == KvUserDefined 
-+           && pszLinearUOMName 
-+           && strlen(pszLinearUOMName)>0
-+           && CSLTestBoolean( CPLGetConfigOption("GTIFF_ESRI_CITATION",
-+                                                 "YES") ) )
-+        {
-             SetLinearUnitCitation(psGTIF, pszLinearUOMName);
-+        }
-     }
-     
- /* -------------------------------------------------------------------- */
-@@ -2001,12 +2167,7 @@
- /* -------------------------------------------------------------------- */
-     if( poSRS->GetRoot() != NULL
-         && poSRS->GetRoot()->GetChild(0) != NULL 
--        && (poSRS->IsProjected() || poSRS->IsLocal()  
--
--#if GDAL_VERSION_NUM >=1900
--        || poSRS->IsGeocentric()
--#endif        
--        ) )
-+        && (poSRS->IsProjected() || poSRS->IsLocal() || poSRS->IsGeocentric()) )
-     {
-         GTIFKeySet( psGTIF, GTCitationGeoKey, TYPE_ASCII, 0, 
-                     poSRS->GetRoot()->GetChild(0)->GetValue() );
-@@ -2097,7 +2258,9 @@
-             GTIFKeySet( psGTIF, GeogSemiMajorAxisGeoKey, TYPE_DOUBLE, 1,
-                         dfSemiMajor );
- 
--        if( nGCS == KvUserDefined )
-+        if( nGCS == KvUserDefined 
-+            && CSLTestBoolean( CPLGetConfigOption("GTIFF_ESRI_CITATION",
-+                                                  "YES") ) )
-             SetGeogCSCitation(psGTIF, poSRS, angUnitName, nDatum, nSpheroid);
-     }
- 
-@@ -2105,15 +2268,23 @@
- /*      Do we have TOWGS84 parameters?                                  */
- /* -------------------------------------------------------------------- */
- 
--#if LIBGEOTIFF_VERSION >= 1310
-+#if LIBGEOTIFF_VERSION >= 1310 && !defined(GEO_NORMALIZE_DISABLE_TOWGS84)
-     double adfTOWGS84[7];
- 
-     if( poSRS->GetTOWGS84( adfTOWGS84 ) == OGRERR_NONE )
-     {
-         if( adfTOWGS84[3] == 0.0 && adfTOWGS84[4] == 0.0
-             && adfTOWGS84[5] == 0.0 && adfTOWGS84[6] == 0.0 )
--            GTIFKeySet( psGTIF, GeogTOWGS84GeoKey, TYPE_DOUBLE, 3, 
--                        adfTOWGS84 );
-+        {
-+            if( nGCS == GCS_WGS_84 && adfTOWGS84[0] == 0.0
-+                && adfTOWGS84[1] == 0.0 && adfTOWGS84[2] == 0.0 )
-+            {
-+                ; /* do nothing */
-+            }
-+            else
-+                GTIFKeySet( psGTIF, GeogTOWGS84GeoKey, TYPE_DOUBLE, 3,
-+                            adfTOWGS84 );
-+        }
-         else
-             GTIFKeySet( psGTIF, GeogTOWGS84GeoKey, TYPE_DOUBLE, 7, 
-                         adfTOWGS84 );
-@@ -2160,49 +2331,93 @@
- CPLErr GTIFWktFromMemBuf( int nSize, unsigned char *pabyBuffer, 
-                           char **ppszWKT, double *padfGeoTransform,
-                           int *pnGCPCount, GDAL_GCP **ppasGCPList )
-+{
-+    return GTIFWktFromMemBufEx(nSize, pabyBuffer, ppszWKT, padfGeoTransform,
-+                               pnGCPCount, ppasGCPList, NULL);
-+}
-+
-+CPLErr GTIFWktFromMemBufEx( int nSize, unsigned char *pabyBuffer, 
-+                            char **ppszWKT, double *padfGeoTransform,
-+                            int *pnGCPCount, GDAL_GCP **ppasGCPList,
-+                            int *pbPixelIsPoint )
- 
- {
--    TIFF        *hTIFF;
--    GTIF 	*hGTIF;
--    GTIFDefn	sGTIFDefn;
--    char        szFilename[100];
-+    bool    bPixelIsPoint = false;
-+    int     bPointGeoIgnore = FALSE;
-+    short nRasterType;
-+    char szFilename[100];
- 
--    sprintf( szFilename, "/vsimem/wkt_from_mem_buf_%ld.tif", 
-+    sprintf( szFilename, "/vsimem/wkt_from_mem_buf_%ld.tif",
-              (long) CPLGetPID() );
- 
- /* -------------------------------------------------------------------- */
-+/*      Make sure we have hooked CSVFilename().                         */
-+/* -------------------------------------------------------------------- */
-+    LibgeotiffOneTimeInit();
-+
-+/* -------------------------------------------------------------------- */
- /*      Create a memory file from the buffer.                           */
- /* -------------------------------------------------------------------- */
-     VSILFILE *fp = VSIFileFromMemBuffer( szFilename, pabyBuffer, nSize, FALSE );
-     if( fp == NULL )
-         return CE_Failure;
--    VSIFCloseL( fp );
- 
- /* -------------------------------------------------------------------- */
- /*      Initialize access to the memory geotiff structure.              */
- /* -------------------------------------------------------------------- */
--    hTIFF = VSI_TIFFOpen( szFilename, "r" );
-+    TIFF        *hTIFF;
-+
-+    hTIFF = VSI_TIFFOpen( szFilename, "rc", fp );
- 
-     if( hTIFF == NULL )
-     {
-         CPLError( CE_Failure, CPLE_AppDefined,
-                   "TIFF/GeoTIFF structure is corrupt." );
-         VSIUnlink( szFilename );
-+        VSIFCloseL( fp );
-         return CE_Failure;
-     }
-     
- /* -------------------------------------------------------------------- */
- /*      Get the projection definition.                                  */
- /* -------------------------------------------------------------------- */
-+    GTIF 	*hGTIF;
-+    GTIFDefn    *psGTIFDefn;
-+
-     hGTIF = GTIFNew(hTIFF);
- 
--    if( hGTIF != NULL && GTIFGetDefn( hGTIF, &sGTIFDefn ) )
--        *ppszWKT = GTIFGetOGISDefn( hGTIF, &sGTIFDefn );
-+    if( hGTIF != NULL && GTIFKeyGet(hGTIF, GTRasterTypeGeoKey, &nRasterType,
-+                0, 1 ) == 1
-+        && nRasterType == (short) RasterPixelIsPoint )
-+    {
-+        bPixelIsPoint = true;
-+        bPointGeoIgnore =
-+            CSLTestBoolean( CPLGetConfigOption("GTIFF_POINT_GEO_IGNORE",
-+                                            "FALSE") );
-+    }
-+    if( pbPixelIsPoint )
-+        *pbPixelIsPoint = bPixelIsPoint;
-+
-+#if LIBGEOTIFF_VERSION >= 1410
-+    psGTIFDefn = GTIFAllocDefn();
-+#else
-+    psGTIFDefn = (GTIFDefn *) CPLCalloc(1,sizeof(GTIFDefn));
-+#endif    
-+
-+                
-+    if( hGTIF != NULL && GTIFGetDefn( hGTIF, psGTIFDefn ) )
-+        *ppszWKT = GTIFGetOGISDefn( hGTIF, psGTIFDefn );
-     else
-         *ppszWKT = NULL;
-     
-     if( hGTIF )
-         GTIFFree( hGTIF );
-+    
-+#if LIBGEOTIFF_VERSION >= 1410
-+    GTIFFreeDefn(psGTIFDefn);
-+#else
-+    CPLFree(psGTIFDefn);
-+#endif    
- 
- /* -------------------------------------------------------------------- */
- /*      Get geotransform or tiepoints.                                  */
-@@ -2233,6 +2448,13 @@
-                 padfTiePoints[3] - padfTiePoints[0] * padfGeoTransform[1];
-             padfGeoTransform[3] =
-                 padfTiePoints[4] - padfTiePoints[1] * padfGeoTransform[5];
-+        
-+            // adjust for pixel is point in transform
-+            if( bPixelIsPoint && !bPointGeoIgnore )
-+            {
-+                padfGeoTransform[0] -= (padfGeoTransform[1] * 0.5 + padfGeoTransform[2] * 0.5);
-+                padfGeoTransform[3] -= (padfGeoTransform[4] * 0.5 + padfGeoTransform[5] * 0.5);
-+            }
-         }
-     }
- 
-@@ -2273,6 +2495,7 @@
- /*      Cleanup.                                                        */
- /* -------------------------------------------------------------------- */
-     XTIFFClose( hTIFF );
-+    VSIFCloseL( fp );
- 
-     VSIUnlink( szFilename );
- 
-@@ -2289,6 +2512,16 @@
- CPLErr GTIFMemBufFromWkt( const char *pszWKT, const double *padfGeoTransform,
-                           int nGCPCount, const GDAL_GCP *pasGCPList,
-                           int *pnSize, unsigned char **ppabyBuffer )
-+{
-+    return GTIFMemBufFromWktEx(pszWKT, padfGeoTransform,
-+                               nGCPCount,pasGCPList,
-+                               pnSize, ppabyBuffer, FALSE);
-+}
-+
-+CPLErr GTIFMemBufFromWktEx( const char *pszWKT, const double *padfGeoTransform,
-+                            int nGCPCount, const GDAL_GCP *pasGCPList,
-+                            int *pnSize, unsigned char **ppabyBuffer,
-+                            int bPixelIsPoint )
- 
- {
-     TIFF        *hTIFF;
-@@ -2299,14 +2532,24 @@
-              (long) CPLGetPID() );
- 
- /* -------------------------------------------------------------------- */
-+/*      Make sure we have hooked CSVFilename().                         */
-+/* -------------------------------------------------------------------- */
-+    LibgeotiffOneTimeInit();
-+
-+/* -------------------------------------------------------------------- */
- /*      Initialize access to the memory geotiff structure.              */
- /* -------------------------------------------------------------------- */
--    hTIFF = VSI_TIFFOpen( szFilename, "w" );
-+    VSILFILE* fpL = VSIFOpenL( szFilename, "w" );
-+    if( fpL == NULL )
-+        return CE_Failure;
-+
-+    hTIFF = VSI_TIFFOpen( szFilename, "w", fpL );
- 
-     if( hTIFF == NULL )
-     {
-         CPLError( CE_Failure, CPLE_AppDefined,
-                   "TIFF/GeoTIFF structure is corrupt." );
-+        VSIFCloseL(fpL);
-         return CE_Failure;
-     }
- 
-@@ -2325,10 +2568,26 @@
- /*      Get the projection definition.                                  */
- /* -------------------------------------------------------------------- */
- 
--    if( pszWKT != NULL )
-+    int  bPointGeoIgnore = FALSE;
-+    if( bPixelIsPoint )
-+    {
-+        bPointGeoIgnore = 
-+            CSLTestBoolean( CPLGetConfigOption("GTIFF_POINT_GEO_IGNORE",
-+                                               "FALSE") );
-+    }
-+
-+    if( pszWKT != NULL || bPixelIsPoint )
-     {
-         hGTIF = GTIFNew(hTIFF);
--        GTIFSetFromOGISDefn( hGTIF, pszWKT );
-+        if( pszWKT != NULL )
-+            GTIFSetFromOGISDefn( hGTIF, pszWKT );
-+
-+        if( bPixelIsPoint )
-+        {
-+            GTIFKeySet(hGTIF, GTRasterTypeGeoKey, TYPE_SHORT, 1,
-+                       RasterPixelIsPoint);
-+        }
-+
-         GTIFWriteKeys( hGTIF );
-         GTIFFree( hGTIF );
-     }
-@@ -2336,6 +2595,7 @@
- /* -------------------------------------------------------------------- */
- /*      Set the geotransform, or GCPs.                                  */
- /* -------------------------------------------------------------------- */
-+
-     if( padfGeoTransform[0] != 0.0 || padfGeoTransform[1] != 1.0
-         || padfGeoTransform[2] != 0.0 || padfGeoTransform[3] != 0.0
-         || padfGeoTransform[4] != 0.0 || ABS(padfGeoTransform[5]) != 1.0 )
-@@ -2357,7 +2617,13 @@
-             adfTiePoints[3] = padfGeoTransform[0];
-             adfTiePoints[4] = padfGeoTransform[3];
-             adfTiePoints[5] = 0.0;
--        
-+
-+            if( bPixelIsPoint && !bPointGeoIgnore )
-+            {
-+                adfTiePoints[3] += padfGeoTransform[1] * 0.5 + padfGeoTransform[2] * 0.5;
-+                adfTiePoints[4] += padfGeoTransform[4] * 0.5 + padfGeoTransform[5] * 0.5;
-+            }
-+
-             TIFFSetField( hTIFF, TIFFTAG_GEOTIEPOINTS, 6, adfTiePoints );
-         }
-         else
-@@ -2374,6 +2640,12 @@
-             adfMatrix[7] = padfGeoTransform[3];
-             adfMatrix[15] = 1.0;
- 
-+            if( bPixelIsPoint && !bPointGeoIgnore )
-+            {
-+                adfMatrix[3] += padfGeoTransform[1] * 0.5 + padfGeoTransform[2] * 0.5;
-+                adfMatrix[7] += padfGeoTransform[4] * 0.5 + padfGeoTransform[5] * 0.5;
-+            }
-+
-             TIFFSetField( hTIFF, TIFFTAG_GEOTRANSMATRIX, 16, adfMatrix );
-         }
-     }
-@@ -2412,6 +2684,7 @@
-     TIFFWriteDirectory( hTIFF );
- 
-     XTIFFClose( hTIFF );
-+    VSIFCloseL(fpL);
- 
- /* -------------------------------------------------------------------- */
- /*      Read back from the memory buffer.  It would be preferrable      */
-@@ -2425,4 +2698,3 @@
- 
-     return CE_None;
- }
--
---- liblas.orig/src/gt_wkt_srs.h
-+++ liblas/src/gt_wkt_srs.h
-@@ -1,5 +1,5 @@
- /******************************************************************************
-- * $Id: gt_wkt_srs.h 21595 2011-01-28 04:21:40Z warmerdam $
-+ * $Id$
-  *
-  * Project:  GeoTIFF Driver
-  * Purpose:  Implements translation between GeoTIFF normalized projection
-@@ -9,7 +9,7 @@
-  * Author:   Even Rouault
-  *
-  ******************************************************************************
-- * Copyright (c) 2010, Even Rouault
-+ * Copyright (c) 2010, 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"),
---- liblas.orig/src/gt_wkt_srs_for_gdal.h
-+++ liblas/src/gt_wkt_srs_for_gdal.h
-@@ -1,12 +1,12 @@
- /******************************************************************************
-- * $Id: gt_wkt_srs_for_gdal.h 21595 2011-01-28 04:21:40Z warmerdam $
-+ * $Id$
-  *
-  * Project:  GeoTIFF Driver
-  * Purpose:  Read/Write in-memory GeoTIFF file
-  * Author:   Even Rouault
-  *
-  ******************************************************************************
-- * Copyright (c) 2010, Even Rouault
-+ * Copyright (c) 2010-2012, 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"),
-@@ -39,10 +39,22 @@
-                                   const double *padfGeoTransform,
-                                   int nGCPCount, const GDAL_GCP *pasGCPList,
-                                   int *pnSize, unsigned char **ppabyBuffer );
-+
-+CPLErr GTIFMemBufFromWktEx( const char *pszWKT,
-+                            const double *padfGeoTransform,
-+                            int nGCPCount, const GDAL_GCP *pasGCPList,
-+                            int *pnSize, unsigned char **ppabyBuffer,
-+                            int bPixelIsPoint );
-+
- CPLErr CPL_DLL GTIFWktFromMemBuf( int nSize, unsigned char *pabyBuffer,
-                           char **ppszWKT, double *padfGeoTransform,
-                           int *pnGCPCount, GDAL_GCP **ppasGCPList );
- 
--CPL_C_END
-+CPLErr GTIFWktFromMemBufEx( int nSize, unsigned char *pabyBuffer, 
-+                            char **ppszWKT, double *padfGeoTransform,
-+                            int *pnGCPCount, GDAL_GCP **ppasGCPList,
-+                            int *pbPixelIsPoint );
-+
-+CPL_C_END;
- 
- #endif // GT_WKT_SRS_FOR_GDAL_H_INCLUDED
---- liblas.orig/src/tifvsi.cpp
-+++ liblas/src/tifvsi.cpp
-@@ -1,5 +1,5 @@
- /******************************************************************************
-- * $Id: tifvsi.cpp 10645 2007-01-18 02:22:39Z warmerdam $
-+ * $Id$
-  *
-  * Project:  GeoTIFF Driver
-  * Purpose:  Implement system hook functions for libtiff on top of CPL/VSI,
-@@ -9,6 +9,7 @@
-  *
-  ******************************************************************************
-  * Copyright (c) 2005, Frank Warmerdam, warmerdam at pobox.com
-+ * Copyright (c) 2010-2012, 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"),
-@@ -32,12 +33,18 @@
- /*
-  * TIFF Library UNIX-specific Routines.
-  */
--#include "tiffio.h"
- #include "cpl_vsi.h"
-+#include "tifvsi.h"
-+
-+#include <errno.h>
- 
- // We avoid including xtiffio.h since it drags in the libgeotiff version
- // of the VSI functions.
- 
-+#ifdef RENAME_INTERNAL_LIBGEOTIFF_SYMBOLS
-+#include "gdal_libgeotiff_symbol_rename.h"
-+#endif
-+
- CPL_C_START
- extern TIFF CPL_DLL * XTIFFClientOpen(const char* name, const char* mode, 
-                                       thandle_t thehandle,
-@@ -50,28 +57,36 @@
- static tsize_t
- _tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
- {
--    return VSIFReadL( buf, 1, size, (FILE *) fd );
-+    return VSIFReadL( buf, 1, size, (VSILFILE *) fd );
- }
- 
- static tsize_t
- _tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
- {
--    return VSIFWriteL( buf, 1, size, (FILE *) fd );
-+    tsize_t nRet = VSIFWriteL( buf, 1, size, (VSILFILE *) fd );
-+    if (nRet < size)
-+    {
-+        TIFFErrorExt( fd, "_tiffWriteProc", "%s", VSIStrerror( errno ) );
-+    }
-+    return nRet;
- }
- 
- static toff_t
- _tiffSeekProc(thandle_t fd, toff_t off, int whence)
- {
--    if( VSIFSeekL( (FILE *) fd, off, whence ) == 0 )
--        return (toff_t) VSIFTellL( (FILE *) fd );
-+    if( VSIFSeekL( (VSILFILE *) fd, off, whence ) == 0 )
-+        return (toff_t) VSIFTellL( (VSILFILE *) fd );
-     else
-+    {
-+        TIFFErrorExt( fd, "_tiffSeekProc", "%s", VSIStrerror( errno ) );
-         return (toff_t) -1;
-+    }
- }
- 
- static int
- _tiffCloseProc(thandle_t fd)
- {
--    return VSIFCloseL( (FILE *) fd );
-+    return 0;
- }
- 
- static toff_t
-@@ -80,11 +95,11 @@
-     vsi_l_offset  old_off;
-     toff_t        file_size;
- 
--    old_off = VSIFTellL( (FILE *) fd );
--    VSIFSeekL( (FILE *) fd, 0, SEEK_END );
-+    old_off = VSIFTellL( (VSILFILE *) fd );
-+    VSIFSeekL( (VSILFILE *) fd, 0, SEEK_END );
-     
--    file_size = (toff_t) VSIFTellL( (FILE *) fd );
--    VSIFSeekL( (FILE *) fd, old_off, SEEK_SET );
-+    file_size = (toff_t) VSIFTellL( (VSILFILE *) fd );
-+    VSIFSeekL( (VSILFILE *) fd, old_off, SEEK_SET );
- 
-     return file_size;
- }
-@@ -105,12 +120,11 @@
- /*
-  * Open a TIFF file for read/writing.
-  */
--TIFF* VSI_TIFFOpen(const char* name, const char* mode)
-+TIFF* VSI_TIFFOpen(const char* name, const char* mode,
-+                   VSILFILE* fp)
- {
--    static const char module[] = "TIFFOpen";
-     int           i, a_out;
-     char          access[32];
--    FILE          *fp;
-     TIFF          *tif;
- 
-     a_out = 0;
-@@ -128,24 +142,13 @@
-     }
- 
-     strcat( access, "b" );
--                    
--    fp = VSIFOpenL( name, access );
--    if (fp == NULL) {
--        if( errno >= 0 )
--            TIFFError(module,"%s: %s", name, VSIStrerror( errno ) );
--        else
--            TIFFError(module, "%s: Cannot open", name);
--        return ((TIFF *)0);
--    }
- 
-+    VSIFSeekL(fp, 0, SEEK_SET);
-     tif = XTIFFClientOpen(name, mode,
-                           (thandle_t) fp,
-                           _tiffReadProc, _tiffWriteProc,
-                           _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
-                           _tiffMapProc, _tiffUnmapProc);
- 
--    if( tif == NULL )
--        VSIFCloseL( fp );
--        
-     return tif;
- }
---- liblas.orig/src/tifvsi.h
-+++ liblas/src/tifvsi.h
-@@ -1,5 +1,5 @@
- /******************************************************************************
-- * $Id: tifvsi.h 21102 2010-11-08 20:47:38Z rouault $
-+ * $Id$
-  *
-  * Project:  GeoTIFF Driver
-  * Purpose:  Implement system hook functions for libtiff on top of CPL/VSI,
-@@ -9,6 +9,7 @@
-  *
-  ******************************************************************************
-  * Copyright (c) 2005, Frank Warmerdam, warmerdam at pobox.com
-+ * Copyright (c) 2010, 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"),
-@@ -34,6 +35,6 @@
- 
- #include "tiffio.h"
- 
--TIFF* VSI_TIFFOpen(const char* name, const char* mode);
-+TIFF* VSI_TIFFOpen(const char* name, const char* mode, VSILFILE* fp);
- 
- #endif // TIFVSI_H_INCLUDED

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/liblas.git



More information about the Pkg-grass-devel mailing list