diff --git a/CMake/TestGDALHasGeoTiff.cxx b/CMake/TestGDALHasGeoTiff.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..1b02ef9ac6ebf4b0215ef830c68232257249bbab
--- /dev/null
+++ b/CMake/TestGDALHasGeoTiff.cxx
@@ -0,0 +1,8 @@
+#include "geotiff.h"
+#include <iostream>
+
+int main(int argc,char * argv[])
+{
+  GTIFKeyCode(argv[0]);
+  return 0;
+}
diff --git a/CMake/TestGDALHasTiff.cxx b/CMake/TestGDALHasTiff.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..25c5b83bc0bdec425954b188bf7032894b683700
--- /dev/null
+++ b/CMake/TestGDALHasTiff.cxx
@@ -0,0 +1,8 @@
+#include "tiffio.h"
+#include <iostream>
+
+int main(int argc,char * argv[])
+{
+  std::cout<<"TIFF version: "<<TIFFGetVersion()<<std::endl;
+  return 0;
+}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 004a388ea77aac7f8a441feeea4cce7586cb39ef..523b90dba08c0f8d8a1513dedb431172da953c31 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -327,6 +327,61 @@ ENDIF (NOT GDAL_INCLUDE_DIRS)
 INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIRS})
 LINK_DIRECTORIES( ${GDAL_LIBRARY_DIRS} )
 
+# Find geotiff headers
+FIND_PATH(GEOTIFF_INCLUDE_DIRS geotiff.h $ENV{GDAL_INCLUDE_DIRS} /usr/include/geotiff)
+IF (NOT GEOTIFF_INCLUDE_DIRS)
+MESSAGE(FATAL_ERROR
+         "Cannot find geotiff headers. Please set GEOTIFF_INCLUDE_DIRS.")
+ENDIF (NOT GEOTIFF_INCLUDE_DIRS)
+INCLUDE_DIRECTORIES(${GEOTIFF_INCLUDE_DIRS})
+
+# Find tiff headers
+FIND_PATH(TIFF_INCLUDE_DIRS tiffio.h $ENV{GDAL_INCLUDE_DIRS} /usr/include)
+IF (NOT TIFF_INCLUDE_DIRS)
+MESSAGE(FATAL_ERROR
+         "Cannot find libtiff headers. Please set TIFF_INCLUDE_DIRS.")
+ENDIF (NOT TIFF_INCLUDE_DIRS)
+INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIRS})
+
+# Check if gdal has tiff library
+SET(GDAL_HAS_TIFF 0)
+TRY_COMPILE(GDAL_HAS_TIFF
+${CMAKE_CURRENT_BINARY_DIR}
+${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasTiff.cxx
+CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${TIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIRS}" "-DLINK_DIRECTORIES:PATH=${GDAL_LIBRARY_DIRS}" "-DLINK_LIBRARIES:STRING=gdal"
+OUTPUT_VARIABLE OUTPUT)
+IF(GDAL_HAS_TIFF)
+MESSAGE("-- Testing if GDAL has tiff    -- yes.")
+SET(TIFF_LIBRARY gdal)
+ELSE(GDAL_HAS_TIFF)
+MESSAGE("-- Testing if GDAL has tiff    -- no.")
+FIND_LIBRARY(TIFF_LIBRARY tiff PATHS)
+IF (NOT TIFF_LIBRARY)
+MESSAGE(FATAL_ERROR
+         "Cannot find tiff library. Please set TIFF_LIBRARY.")
+ENDIF (NOT TIFF_LIBRARY)
+ENDIF(GDAL_HAS_TIFF)
+
+# Check if gdal has geotiff library
+SET(GDAL_HAS_GEOTIFF 0)
+TRY_COMPILE(GDAL_HAS_GEOTIFF
+${CMAKE_CURRENT_BINARY_DIR}
+${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasGeoTiff.cxx
+CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GEOTIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIRS}" "-DLINK_DIRECTORIES:PATH=${GDAL_LIBRARY_DIRS}" "-DLINK_LIBRARIES:STRING=gdal"
+OUTPUT_VARIABLE OUTPUT)
+IF(GDAL_HAS_GEOTIFF)
+MESSAGE("-- Testing if GDAL has geotiff -- yes.")
+SET(GEOTIFF_LIBRARY gdal)
+ELSE(GDAL_HAS_GEOTIFF)
+MESSAGE("-- Testing if GDAL has geotiff -- no.")
+FIND_LIBRARY(GEOTIFF_LIBRARY geotiff PATHS)
+IF (NOT GEOTIFF_LIBRARY)
+MESSAGE(FATAL_ERROR
+         "Cannot find geotiff library. Please set LIBGEOTIFF_LIBRARY_DIR.")
+ENDIF (NOT GEOTIFF_LIBRARY)
+ENDIF(GDAL_HAS_GEOTIFF)
+
+
 
 #-------------------------------
 # End connections whith external libraries
@@ -497,7 +552,7 @@ ENDIF(OTB_USE_VISU_GUI)
 # Use OTB_ALLS_UTILITIES_DEPENDENT_LIBRARIES to LINK Utilities Algo libraries into your executable
 # => Create OTB_IO_UTILITIES_DEPENDENT_LIBRARIES
 
-SET(OTB_IO_UTILITIES_DEPENDENT_LIBRARIES "gdal;dxf;tinyXML;otbgeotiff;otbxtiff;otbliblas;otbossim;otbossimplugins" )
+SET(OTB_IO_UTILITIES_DEPENDENT_LIBRARIES "gdal;dxf;tinyXML;otbliblas;otbossim;otbossimplugins" )
 
 IF(NOT OTB_USE_EXTERNAL_OPENTHREADS)
         SET(OTB_IO_UTILITIES_DEPENDENT_LIBRARIES  "${OTB_IO_UTILITIES_DEPENDENT_LIBRARIES};${OPENTHREADS_LIBRARY}")
diff --git a/Code/IO/CMakeLists.txt b/Code/IO/CMakeLists.txt
index a200885f9138913922496cc25b51208f69f8f5aa..6431a7696c76550a06eee4ff3b1fec1fd61c1115 100644
--- a/Code/IO/CMakeLists.txt
+++ b/Code/IO/CMakeLists.txt
@@ -27,7 +27,7 @@ ENDIF(OTB_COMPILE_JPEG2000)
 
 
 ADD_LIBRARY(OTBIO ${OTBIO_SRCS})
-TARGET_LINK_LIBRARIES (OTBIO OTBCommon ITKIO ITKCommon gdal otbossim otbossimplugins dxf otbkml otbliblas)
+TARGET_LINK_LIBRARIES (OTBIO OTBCommon otbossim otbossimplugins ITKIO ITKCommon dxf otbkml otbliblas)
 IF( OTB_COMPILE_JPEG2000 )
     TARGET_LINK_LIBRARIES (OTBIO otbopenjpeg)
 ENDIF( OTB_COMPILE_JPEG2000 )
diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt
index 23d431b7c92bd79bc66e9bb3336468264951b96e..9bc464bce498a83120cbeb0ec1cd6794aa47192a 100644
--- a/Utilities/CMakeLists.txt
+++ b/Utilities/CMakeLists.txt
@@ -25,9 +25,8 @@ IF(NOT OTB_USE_EXTERNAL_EXPAT)
 	SUBDIRS( otbexpat )
 ENDIF(NOT OTB_USE_EXTERNAL_EXPAT)
 
-#Supress libraries not used by the 2.2.0 version
-#SUBDIRS(BGL otbsvm dxflib InsightJournal otbossim otb6S otbgeotiff tinyXMLlib otbgalib otbkml)
-SUBDIRS(BGL otbsvm dxflib InsightJournal otbossim otbossimplugins otb6S otbgeotiff tinyXMLlib otbkml otbliblas otbedison otbsiftfast)
+
+SUBDIRS(BGL otbsvm dxflib InsightJournal otbossim otbossimplugins otb6S tinyXMLlib otbkml otbliblas otbedison otbsiftfast)
 
 IF(BUILD_TESTING)
         SUBDIRS( Dart )
diff --git a/Utilities/otbgeotiff/.NoDartCoverage b/Utilities/otbgeotiff/.NoDartCoverage
deleted file mode 100644
index 3c99729386edb290d6f07512fafee0faa0468b44..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/.NoDartCoverage
+++ /dev/null
@@ -1 +0,0 @@
-# do not do coverage in this directory
diff --git a/Utilities/otbgeotiff/CMakeLists.txt b/Utilities/otbgeotiff/CMakeLists.txt
deleted file mode 100644
index 1338680abb91495e6ace8eb2005977f0a101ef6a..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/CMakeLists.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-PROJECT(libgeotiff)
-
-FILE(GLOB libgeotiff_SRCS "*.c")
-FILE(GLOB libgeotiff_HDRS "*.h")
-
-CONFIGURE_FILE(geo_config.h.in ${OTB_BINARY_DIR}/Utilities/otbgeotiff/geo_config.h)
-
-INCLUDE_DIRECTORIES(${OTB_BINARY_DIR}/Utilities/otbgeotiff/)
-
-# Adjust the compiler flags to avoid problems with geotiff code.
-IF(CMAKE_COMPILER_IS_GNUCC)
-  # Hide warnings in geotiff code.
-  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
-
-  # CMake versions before 2.4 did not put the source-file-specific flags
-  # after the directory-level flags.  Remove optimization flags from the
-  # CMAKE_C_FLAGS* variables so they can be overridden.
-  IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4)
-    FOREACH(c "" "_DEBUG" "_RELEASE" "_MINSIZEREL" "_RELWITHDEBINFO")
-      STRING(REGEX REPLACE
-        "-O[^ ]*( |$)" "" CMAKE_C_FLAGS${c} "${CMAKE_C_FLAGS${c}}")
-    ENDFOREACH(c)
-  ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4)
-
-ENDIF(CMAKE_COMPILER_IS_GNUCC)
-
-ADD_LIBRARY(otbgeotiff ${libgeotiff_SRCS})
-TARGET_LINK_LIBRARIES(otbgeotiff itktiff)
-
-INSTALL(TARGETS otbgeotiff
-RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
-LIBRARY DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
-ARCHIVE DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT Development)
-
-INSTALL(FILES ${libgeotiff_HDRS_HDRS}
-    DESTINATION ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgeotiff
-    COMPONENT Development)
-
-INSTALL(FILES ${OTB_BINARY_DIR}/Utilities/otbgeotiff/geo_config.h
-	      DESTINATION ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgeotiff
-	      COMPONENT Development)
-
-SUBDIRS(libxtiff)
diff --git a/Utilities/otbgeotiff/LICENSE b/Utilities/otbgeotiff/LICENSE
deleted file mode 100644
index ac409dafebb2e6cc05c6dea5459e42ed1f154d03..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/LICENSE
+++ /dev/null
@@ -1,83 +0,0 @@
-
-	libgeotiff Licensing
-	====================
-
-All the source code in this toolkit are either in the public domain, or under 
-an X style license.  In any event it is all considered to be free to use
-for any purpose (including commercial software).  No credit is required 
-though some of the code requires that the specific source code modules 
-retain their existing copyright statements.  The CSV files, and other tables
-derived from the EPSG coordinate system database are also free to use.  In 
-particular, no part of this code is "copyleft", nor does it imply any 
-requirement for users to disclose this or their own source code.
-
-All components not carrying their own copyright message, but distributed
-with libgeotiff should be considered to be under the same license as
-Niles' code.
-
----------
-
-Code by Frank Warmerdam has this copyright notice (directly copied from
-X Consortium licence):
-
- * 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.
-
------------
-
-Code by Niles Ritter is under this licence:
-
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
-
------------
-
-The EPSG Tables (from which the CSV files, and .inc files are derived)
-carried this statement on use of the data (from the EPSG web site):
-
-  Use of the Data 
-
-  The user assumes the entire risk as to the accuracy and the use of this 
-  data. The data may be copied and distributed subject to the following 
-  conditions: 
-
-      1.All data pertinent to a specific coordinate system must be copied 
-        without modification and all related pages must be included; 
-
-      2.All components of this data set pertinent to any given coordinate 
-        system must be distributed together (complete distribution of all 
-        components of the data set is preferred, but the EPSG recognises 
-        the need for a more limited distribution); 
-
-      3.The data may not be distributed for profit by any third party; and 
-      4.The original source [EPSG] must be acknowledged.
-
-      INFORMATION PROVIDED IN THIS DOCUMENT IS PROVIDED "AS
-      IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
-      IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
-      WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-      PARTICULAR PURPOSE. 
-
-
-
diff --git a/Utilities/otbgeotiff/cpl_csv.c b/Utilities/otbgeotiff/cpl_csv.c
deleted file mode 100644
index e37861cec6343725192cd19cca531f5992f9898a..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/cpl_csv.c
+++ /dev/null
@@ -1,1016 +0,0 @@
-/******************************************************************************
- * 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.
- ******************************************************************************
- *
- * cpl_csv.c: Support functions for accessing CSV files.
- *
- * $Log: cpl_csv.c,v $
- * Revision 1.16  2003/07/10 18:03:28  warmerda
- * don't crash if NULL passed to gtCSVAccess()
- *
- * Revision 1.15  2003/01/20 06:46:35  warmerda
- * search for pcs.csv, not horiz_cs.csv
- *
- * Revision 1.14  2003/01/15 04:39:58  warmerda
- * change internal name of CSVAccess
- *
- * Revision 1.13  2002/11/28 22:26:41  warmerda
- * upgraded to proper CSV formatting, and in-memory caching
- *
- * Revision 1.12  2002/06/19 03:51:15  warmerda
- * migrated cpl_csv.h into cpl_serv.h
- *
- * Revision 1.11  2001/03/05 04:49:56  warmerda
- * try to clear CPLReadLine buffer on deaccess
- *
- * Revision 1.10  2001/01/17 15:32:19  warmerda
- * Include /usr/share/epsg_csv and share/epsg_csv in csv search path.
- *
- * Revision 1.9  2000/12/12 19:34:36  warmerda
- * Use CSV_DATA_DIR if defined.
- *
- * Revision 1.8  2000/08/22 04:33:33  warmerda
- * added support for /usr/local/shared/epsg_csv
- *
- * Revision 1.7  1999/12/03 14:42:59  warmerda
- * Passing a NULL filename into CSVAccess() now results in a graceful
- * failure to open the file.
- *
- * Revision 1.6  1999/06/26 17:28:51  warmerda
- * Fixed reading of records with newlines embedded in quoted strings.
- *
- * Revision 1.5  1999/05/04 03:07:24  warmerda
- * avoid warning
- *
- * Revision 1.4  1999/04/28 19:59:56  warmerda
- * added some doxygen style documentation
- *
- * Revision 1.3  1999/03/17 19:53:15  geotiff
- * sys includes moved to cpl_serv.h
- *
- * Revision 1.2  1999/03/10 16:54:42  geotiff
- * Added use of the GEOTIFF_CSV environment variable to locate CSV files.
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- * Revision 1.2  1999/02/24 16:23:21  warmerda
- * added lots
- *
- * Revision 1.1  1999/01/05 16:52:36  warmerda
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-
-/* ==================================================================== */
-/*      The CSVTable is a persistant set of info about an open CSV      */
-/*      table.  While it doesn't currently maintain a record index,     */
-/*      or in-memory copy of the table, it could be changed to do so    */
-/*      in the future.                                                  */
-/* ==================================================================== */
-typedef struct ctb {
-    FILE        *fp;
-
-    struct ctb *psNext;
-
-    char        *pszFilename;
-
-    char        **papszFieldNames;
-
-    char        **papszRecFields;
-
-    int         iLastLine;
-
-    /* Cache for whole file */
-    int         nLineCount;
-    char        **papszLines;
-    int         *panLineIndex;
-    char        *pszRawData;
-} CSVTable;
-
-static CSVTable *psCSVTableList = NULL;
-
-/************************************************************************/
-/*                             CSVAccess()                              */
-/*                                                                      */
-/*      This function will fetch a handle to the requested table.       */
-/*      If not found in the ``open table list'' the table will be       */
-/*      opened and added to the list.  Eventually this function may     */
-/*      become public with an abstracted return type so that            */
-/*      applications can set options about the table.  For now this     */
-/*      isn't done.                                                     */
-/************************************************************************/
-
-static CSVTable *gtCSVAccess( const char * pszFilename )
-
-{
-    CSVTable    *psTable;
-    FILE        *fp;
-
-    if( pszFilename == NULL )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Is the table already in the list.                               */
-/* -------------------------------------------------------------------- */
-    for( psTable = psCSVTableList; psTable != NULL; psTable = psTable->psNext )
-    {
-        if( EQUAL(psTable->pszFilename,pszFilename) )
-        {
-            /*
-             * Eventually we should consider promoting to the front of
-             * the list to accelerate frequently accessed tables.
-             */
-            
-            return( psTable );
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      If not, try to open it.                                         */
-/* -------------------------------------------------------------------- */
-    fp = VSIFOpen( pszFilename, "rb" );
-    if( fp == NULL )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Create an information structure about this table, and add to    */
-/*      the front of the list.                                          */
-/* -------------------------------------------------------------------- */
-    psTable = (CSVTable *) CPLCalloc(sizeof(CSVTable),1);
-
-    psTable->fp = fp;
-    psTable->pszFilename = CPLStrdup( pszFilename );
-    psTable->psNext = psCSVTableList;
-    
-    psCSVTableList = psTable;
-
-/* -------------------------------------------------------------------- */
-/*      Read the table header record containing the field names.        */
-/* -------------------------------------------------------------------- */
-    psTable->papszFieldNames = CSVReadParseLine( fp );
-
-    return( psTable );
-}
-
-/************************************************************************/
-/*                            CSVDeaccess()                             */
-/************************************************************************/
-
-void CSVDeaccess( const char * pszFilename )
-
-{
-    CSVTable    *psLast, *psTable;
-    
-/* -------------------------------------------------------------------- */
-/*      A NULL means deaccess all tables.                               */
-/* -------------------------------------------------------------------- */
-    if( pszFilename == NULL )
-    {
-        while( psCSVTableList != NULL )
-            CSVDeaccess( psCSVTableList->pszFilename );
-        
-        return;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Find this table.                                                */
-/* -------------------------------------------------------------------- */
-    psLast = NULL;
-    for( psTable = psCSVTableList;
-         psTable != NULL && !EQUAL(psTable->pszFilename,pszFilename);
-         psTable = psTable->psNext )
-    {
-        psLast = psTable;
-    }
-
-    if( psTable == NULL )
-    {
-        return;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Remove the link from the list.                                  */
-/* -------------------------------------------------------------------- */
-    if( psLast != NULL )
-        psLast->psNext = psTable->psNext;
-    else
-        psCSVTableList = psTable->psNext;
-
-/* -------------------------------------------------------------------- */
-/*      Free the table.                                                 */
-/* -------------------------------------------------------------------- */
-    if( psTable->fp != NULL )
-        VSIFClose( psTable->fp );
-
-    CSLDestroy( psTable->papszFieldNames );
-    CSLDestroy( psTable->papszRecFields );
-    CPLFree( psTable->pszFilename );
-    CPLFree( psTable->panLineIndex );
-    CPLFree( psTable->pszRawData );
-    CPLFree( psTable->papszLines );
-
-    CPLFree( psTable );
-
-    CPLReadLine( NULL );
-}
-
-/************************************************************************/
-/*                            CSVSplitLine()                            */
-/*                                                                      */
-/*      Tokenize a CSV line into fields in the form of a string         */
-/*      list.  This is used instead of the CPLTokenizeString()          */
-/*      because it provides correct CSV escaping and quoting            */
-/*      semantics.                                                      */
-/************************************************************************/
-
-static char **CSVSplitLine( const char *pszString )
-
-{
-    char        **papszRetList = NULL;
-    char        *pszToken;
-    int         nTokenMax, nTokenLen;
-
-    pszToken = (char *) CPLCalloc(10,1);
-    nTokenMax = 10;
-    
-    while( pszString != NULL && *pszString != '\0' )
-    {
-        int     bInString = FALSE;
-
-        nTokenLen = 0;
-        
-        /* Try to find the next delimeter, marking end of token */
-        for( ; *pszString != '\0'; pszString++ )
-        {
-
-            /* End if this is a delimeter skip it and break. */
-            if( !bInString && *pszString == ',' )
-            {
-                pszString++;
-                break;
-            }
-            
-            if( *pszString == '"' )
-            {
-                if( !bInString || pszString[1] != '"' )
-                {
-                    bInString = !bInString;
-                    continue;
-                }
-                else  /* doubled quotes in string resolve to one quote */
-                {
-                    pszString++;
-                }
-            }
-
-            if( nTokenLen >= nTokenMax-2 )
-            {
-                nTokenMax = nTokenMax * 2 + 10;
-                pszToken = (char *) CPLRealloc( pszToken, nTokenMax );
-            }
-
-            pszToken[nTokenLen] = *pszString;
-            nTokenLen++;
-        }
-
-        pszToken[nTokenLen] = '\0';
-        papszRetList = CSLAddString( papszRetList, pszToken );
-
-        /* If the last token is an empty token, then we have to catch
-         * it now, otherwise we won't reenter the loop and it will be lost. 
-         */
-        if ( *pszString == '\0' && *(pszString-1) == ',' )
-        {
-            papszRetList = CSLAddString( papszRetList, "" );
-        }
-    }
-
-    if( papszRetList == NULL )
-        papszRetList = (char **) CPLCalloc(sizeof(char *),1);
-
-    CPLFree( pszToken );
-
-    return papszRetList;
-}
-
-/************************************************************************/
-/*                          CSVFindNextLine()                           */
-/*                                                                      */
-/*      Find the start of the next line, while at the same time zero    */
-/*      terminating this line.  Take into account that there may be     */
-/*      newline indicators within quoted strings, and that quotes       */
-/*      can be escaped with a backslash.                                */
-/************************************************************************/
-
-static char *CSVFindNextLine( char *pszThisLine )
-
-{
-    int  nQuoteCount = 0, i;
-
-    for( i = 0; pszThisLine[i] != '\0'; i++ )
-    {
-        if( pszThisLine[i] == '\"'
-            && (i == 0 || pszThisLine[i-1] != '\\') )
-            nQuoteCount++;
-
-        if( (pszThisLine[i] == 10 || pszThisLine[i] == 13)
-            && (nQuoteCount % 2) == 0 )
-            break;
-    }
-
-    while( pszThisLine[i] == 10 || pszThisLine[i] == 13 )
-        pszThisLine[i++] = '\0';
-
-    if( pszThisLine[i] == '\0' )
-        return NULL;
-    else
-        return pszThisLine + i;
-}
-
-/************************************************************************/
-/*                             CSVIngest()                              */
-/*                                                                      */
-/*      Load entire file into memory and setup index if possible.       */
-/************************************************************************/
-
-static void CSVIngest( const char *pszFilename )
-
-{
-    CSVTable *psTable = gtCSVAccess( pszFilename );
-    int       nFileLen, i, nMaxLineCount, iLine = 0;
-    char *pszThisLine;
-
-    if( psTable->pszRawData != NULL )
-        return;
-
-/* -------------------------------------------------------------------- */
-/*      Ingest whole file.                                              */
-/* -------------------------------------------------------------------- */
-    VSIFSeek( psTable->fp, 0, SEEK_END );
-    nFileLen = VSIFTell( psTable->fp );
-    VSIRewind( psTable->fp );
-
-    psTable->pszRawData = (char *) CPLMalloc(nFileLen+1);
-    if( (int) VSIFRead( psTable->pszRawData, 1, nFileLen, psTable->fp ) 
-        != nFileLen )
-    {
-        CPLFree( psTable->pszRawData );
-        psTable->pszRawData = NULL;
-
-        CPLError( CE_Failure, CPLE_FileIO, "Read of file %s failed.", 
-                  psTable->pszFilename );
-        return;
-    }
-
-    psTable->pszRawData[nFileLen] = '\0';
-
-/* -------------------------------------------------------------------- */
-/*      Get count of newlines so we can allocate line array.            */
-/* -------------------------------------------------------------------- */
-    nMaxLineCount = 0;
-    for( i = 0; i < nFileLen; i++ )
-    {
-        if( psTable->pszRawData[i] == 10 )
-            nMaxLineCount++;
-    }
-
-    psTable->papszLines = (char **) CPLCalloc(sizeof(char*),nMaxLineCount);
-    
-/* -------------------------------------------------------------------- */
-/*      Build a list of record pointers into the raw data buffer        */
-/*      based on line terminators.  Zero terminate the line             */
-/*      strings.                                                        */
-/* -------------------------------------------------------------------- */
-    /* skip header line */
-    pszThisLine = CSVFindNextLine( psTable->pszRawData );
-
-    while( pszThisLine != NULL && iLine < nMaxLineCount )
-    {
-        psTable->papszLines[iLine++] = pszThisLine;
-        pszThisLine = CSVFindNextLine( pszThisLine );
-    }
-
-    psTable->nLineCount = iLine;
-
-/* -------------------------------------------------------------------- */
-/*      Allocate and populate index array.  Ensure they are in          */
-/*      ascending order so that binary searches can be done on the      */
-/*      array.                                                          */
-/* -------------------------------------------------------------------- */
-    psTable->panLineIndex = (int *) CPLMalloc(sizeof(int)*psTable->nLineCount);
-    for( i = 0; i < psTable->nLineCount; i++ )
-    {
-        psTable->panLineIndex[i] = atoi(psTable->papszLines[i]);
-
-        if( i > 0 && psTable->panLineIndex[i] < psTable->panLineIndex[i-1] )
-        {
-            CPLFree( psTable->panLineIndex );
-            psTable->panLineIndex = NULL;
-            break;
-        }
-    }
-
-    psTable->iLastLine = -1;
-
-/* -------------------------------------------------------------------- */
-/*      We should never need the file handle against, so close it.      */
-/* -------------------------------------------------------------------- */
-    VSIFClose( psTable->fp );
-    psTable->fp = NULL;
-}
-
-/************************************************************************/
-/*                          CSVReadParseLine()                          */
-/*                                                                      */
-/*      Read one line, and return split into fields.  The return        */
-/*      result is a stringlist, in the sense of the CSL functions.      */
-/************************************************************************/
-
-char **CSVReadParseLine( FILE * fp )
-
-{
-    const char  *pszLine;
-    char        *pszWorkLine;
-    char        **papszReturn;
-
-    CPLAssert( fp != NULL );
-    if( fp == NULL )
-        return( NULL );
-    
-    pszLine = CPLReadLine( fp );
-    if( pszLine == NULL )
-        return( NULL );
-
-/* -------------------------------------------------------------------- */
-/*      If there are no quotes, then this is the simple case.           */
-/*      Parse, and return tokens.                                       */
-/* -------------------------------------------------------------------- */
-    if( strchr(pszLine,'\"') == NULL )
-        return CSVSplitLine( pszLine );
-
-/* -------------------------------------------------------------------- */
-/*      We must now count the quotes in our working string, and as      */
-/*      long as it is odd, keep adding new lines.                       */
-/* -------------------------------------------------------------------- */
-    pszWorkLine = CPLStrdup( pszLine );
-
-    while( TRUE )
-    {
-        int             i, nCount = 0;
-
-        for( i = 0; pszWorkLine[i] != '\0'; i++ )
-        {
-            if( pszWorkLine[i] == '\"'
-                && (i == 0 || pszWorkLine[i-1] != '\\') )
-                nCount++;
-        }
-
-        if( nCount % 2 == 0 )
-            break;
-
-        pszLine = CPLReadLine( fp );
-        if( pszLine == NULL )
-            break;
-
-        pszWorkLine = (char *)
-            CPLRealloc(pszWorkLine,
-                       strlen(pszWorkLine) + strlen(pszLine) + 1);
-        strcat( pszWorkLine, pszLine );
-    }
-    
-    papszReturn = CSVSplitLine( pszWorkLine );
-
-    CPLFree( pszWorkLine );
-
-    return papszReturn;
-}
-
-/************************************************************************/
-/*                             CSVCompare()                             */
-/*                                                                      */
-/*      Compare a field to a search value using a particular            */
-/*      criteria.                                                       */
-/************************************************************************/
-
-static int CSVCompare( const char * pszFieldValue, const char * pszTarget,
-                       CSVCompareCriteria eCriteria )
-
-{
-    if( eCriteria == CC_ExactString )
-    {
-        return( strcmp( pszFieldValue, pszTarget ) == 0 );
-    }
-    else if( eCriteria == CC_ApproxString )
-    {
-        return( EQUAL( pszFieldValue, pszTarget ) );
-    }
-    else if( eCriteria == CC_Integer )
-    {
-        return( atoi(pszFieldValue) == atoi(pszTarget) );
-    }
-
-    return FALSE;
-}
-
-/************************************************************************/
-/*                            CSVScanLines()                            */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-char **CSVScanLines( FILE *fp, int iKeyField, const char * pszValue,
-                     CSVCompareCriteria eCriteria )
-
-{
-    char        **papszFields = NULL;
-    int         bSelected = FALSE, nTestValue;
-
-    CPLAssert( pszValue != NULL );
-    CPLAssert( iKeyField >= 0 );
-    CPLAssert( fp != NULL );
-    
-    nTestValue = atoi(pszValue);
-    
-    while( !bSelected ) {
-        papszFields = CSVReadParseLine( fp );
-        if( papszFields == NULL )
-            return( NULL );
-
-        if( CSLCount( papszFields ) < iKeyField+1 )
-        {
-            /* not selected */
-        }
-        else if( eCriteria == CC_Integer
-                 && atoi(papszFields[iKeyField]) == nTestValue )
-        {
-            bSelected = TRUE;
-        }
-        else
-        {
-            bSelected = CSVCompare( papszFields[iKeyField], pszValue,
-                                    eCriteria );
-        }
-
-        if( !bSelected )
-        {
-            CSLDestroy( papszFields );
-            papszFields = NULL;
-        }
-    }
-    
-    return( papszFields );
-}
-
-/************************************************************************/
-/*                        CSVScanLinesIndexed()                         */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-static char **
-CSVScanLinesIndexed( CSVTable *psTable, int nKeyValue )
-
-{
-    int         iTop, iBottom, iMiddle, iResult = -1;
-
-    CPLAssert( psTable->panLineIndex != NULL );
-
-/* -------------------------------------------------------------------- */
-/*      Find target record with binary search.                          */
-/* -------------------------------------------------------------------- */
-    iTop = psTable->nLineCount-1;
-    iBottom = 0;
-
-    while( iTop >= iBottom )
-    {
-        iMiddle = (iTop + iBottom) / 2;
-        if( psTable->panLineIndex[iMiddle] > nKeyValue )
-            iTop = iMiddle - 1;
-        else if( psTable->panLineIndex[iMiddle] < nKeyValue )
-            iBottom = iMiddle + 1;
-        else
-        {
-            iResult = iMiddle;
-            break;
-        }
-    }
-
-    if( iResult == -1 )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Parse target line, and update iLastLine indicator.              */
-/* -------------------------------------------------------------------- */
-    psTable->iLastLine = iResult;
-    
-    return CSVSplitLine( psTable->papszLines[iResult] );
-}
-
-/************************************************************************/
-/*                        CSVScanLinesIngested()                        */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-static char **
-CSVScanLinesIngested( CSVTable *psTable, int iKeyField, const char * pszValue,
-                      CSVCompareCriteria eCriteria )
-
-{
-    char        **papszFields = NULL;
-    int         bSelected = FALSE, nTestValue;
-
-    CPLAssert( pszValue != NULL );
-    CPLAssert( iKeyField >= 0 );
-
-    nTestValue = atoi(pszValue);
-    
-/* -------------------------------------------------------------------- */
-/*      Short cut for indexed files.                                    */
-/* -------------------------------------------------------------------- */
-    if( iKeyField == 0 && eCriteria == CC_Integer 
-        && psTable->panLineIndex != NULL )
-        return CSVScanLinesIndexed( psTable, nTestValue );
-    
-/* -------------------------------------------------------------------- */
-/*      Scan from in-core lines.                                        */
-/* -------------------------------------------------------------------- */
-    while( !bSelected && psTable->iLastLine+1 < psTable->nLineCount ) {
-        psTable->iLastLine++;
-        papszFields = CSVSplitLine( psTable->papszLines[psTable->iLastLine] );
-
-        if( CSLCount( papszFields ) < iKeyField+1 )
-        {
-            /* not selected */
-        }
-        else if( eCriteria == CC_Integer
-                 && atoi(papszFields[iKeyField]) == nTestValue )
-        {
-            bSelected = TRUE;
-        }
-        else
-        {
-            bSelected = CSVCompare( papszFields[iKeyField], pszValue,
-                                    eCriteria );
-        }
-
-        if( !bSelected )
-        {
-            CSLDestroy( papszFields );
-            papszFields = NULL;
-        }
-    }
-    
-    return( papszFields );
-}
-
-/************************************************************************/
-/*                            CSVScanFile()                             */
-/*                                                                      */
-/*      Scan a whole file using criteria similar to above, but also     */
-/*      taking care of file opening and closing.                        */
-/************************************************************************/
-
-char **CSVScanFile( const char * pszFilename, int iKeyField,
-                    const char * pszValue, CSVCompareCriteria eCriteria )
-
-{
-    CSVTable    *psTable;
-
-/* -------------------------------------------------------------------- */
-/*      Get access to the table.                                        */
-/* -------------------------------------------------------------------- */
-    CPLAssert( pszFilename != NULL );
-
-    if( iKeyField < 0 )
-        return NULL;
-
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return NULL;
-    
-    CSVIngest( pszFilename );
-
-/* -------------------------------------------------------------------- */
-/*      Does the current record match the criteria?  If so, just        */
-/*      return it again.                                                */
-/* -------------------------------------------------------------------- */
-    if( iKeyField >= 0
-        && iKeyField < CSLCount(psTable->papszRecFields)
-        && CSVCompare(pszValue,psTable->papszRecFields[iKeyField],eCriteria) )
-    {
-        return psTable->papszRecFields;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Scan the file from the beginning, replacing the ``current       */
-/*      record'' in our structure with the one that is found.           */
-/* -------------------------------------------------------------------- */
-    psTable->iLastLine = -1;
-    CSLDestroy( psTable->papszRecFields );
-
-    if( psTable->pszRawData != NULL )
-        psTable->papszRecFields = 
-            CSVScanLinesIngested( psTable, iKeyField, pszValue, eCriteria );
-    else
-    {
-        VSIRewind( psTable->fp );
-        CPLReadLine( psTable->fp );         /* throw away the header line */
-    
-        psTable->papszRecFields =
-            CSVScanLines( psTable->fp, iKeyField, pszValue, eCriteria );
-    }
-
-    return( psTable->papszRecFields );
-}
-
-/************************************************************************/
-/*                           CPLGetFieldId()                            */
-/*                                                                      */
-/*      Read the first record of a CSV file (rewinding to be sure),     */
-/*      and find the field with the indicated name.  Returns -1 if      */
-/*      it fails to find the field name.  Comparison is case            */
-/*      insensitive, but otherwise exact.  After this function has      */
-/*      been called the file pointer will be positioned just after      */
-/*      the first record.                                               */
-/************************************************************************/
-
-int CSVGetFieldId( FILE * fp, const char * pszFieldName )
-
-{
-    char        **papszFields;
-    int         i;
-    
-    CPLAssert( fp != NULL && pszFieldName != NULL );
-
-    VSIRewind( fp );
-
-    papszFields = CSVReadParseLine( fp );
-    for( i = 0; papszFields != NULL && papszFields[i] != NULL; i++ )
-    {
-        if( EQUAL(papszFields[i],pszFieldName) )
-        {
-            CSLDestroy( papszFields );
-            return i;
-        }
-    }
-
-    CSLDestroy( papszFields );
-
-    return -1;
-}
-
-/************************************************************************/
-/*                         CSVGetFileFieldId()                          */
-/*                                                                      */
-/*      Same as CPLGetFieldId(), except that we get the file based      */
-/*      on filename, rather than having an existing handle.             */
-/************************************************************************/
-
-int CSVGetFileFieldId( const char * pszFilename, const char * pszFieldName )
-
-{
-    CSVTable    *psTable;
-    int         i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get access to the table.                                        */
-/* -------------------------------------------------------------------- */
-    CPLAssert( pszFilename != NULL );
-
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return -1;
-
-/* -------------------------------------------------------------------- */
-/*      Find the requested field.                                       */
-/* -------------------------------------------------------------------- */
-    for( i = 0;
-         psTable->papszFieldNames != NULL
-             && psTable->papszFieldNames[i] != NULL;
-         i++ )
-    {
-        if( EQUAL(psTable->papszFieldNames[i],pszFieldName) )
-        {
-            return i;
-        }
-    }
-
-    return -1;
-}
-
-
-/************************************************************************/
-/*                         CSVScanFileByName()                          */
-/*                                                                      */
-/*      Same as CSVScanFile(), but using a field name instead of a      */
-/*      field number.                                                   */
-/************************************************************************/
-
-char **CSVScanFileByName( const char * pszFilename,
-                          const char * pszKeyFieldName,
-                          const char * pszValue, CSVCompareCriteria eCriteria )
-
-{
-    int         iKeyField;
-
-    iKeyField = CSVGetFileFieldId( pszFilename, pszKeyFieldName );
-    if( iKeyField == -1 )
-        return NULL;
-
-    return( CSVScanFile( pszFilename, iKeyField, pszValue, eCriteria ) );
-}
-
-/************************************************************************/
-/*                            CSVGetField()                             */
-/*                                                                      */
-/*      The all-in-one function to fetch a particular field value       */
-/*      from a CSV file.  Note this function will return an empty       */
-/*      string, rather than NULL if it fails to find the desired        */
-/*      value for some reason.  The caller can't establish that the     */
-/*      fetch failed.                                                   */
-/************************************************************************/
-
-const char *CSVGetField( const char * pszFilename,
-                         const char * pszKeyFieldName,
-                         const char * pszKeyFieldValue,
-                         CSVCompareCriteria eCriteria,
-                         const char * pszTargetField )
-
-{
-    CSVTable    *psTable;
-    char        **papszRecord;
-    int         iTargetField;
-    
-/* -------------------------------------------------------------------- */
-/*      Find the table.                                                 */
-/* -------------------------------------------------------------------- */
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return "";
-
-/* -------------------------------------------------------------------- */
-/*      Find the correct record.                                        */
-/* -------------------------------------------------------------------- */
-    papszRecord = CSVScanFileByName( pszFilename, pszKeyFieldName,
-                                     pszKeyFieldValue, eCriteria );
-
-    if( papszRecord == NULL )
-        return "";
-
-/* -------------------------------------------------------------------- */
-/*      Figure out which field we want out of this.                     */
-/* -------------------------------------------------------------------- */
-    iTargetField = CSVGetFileFieldId( pszFilename, pszTargetField );
-    if( iTargetField < 0 )
-        return "";
-
-    if( iTargetField >= CSLCount( papszRecord ) )
-        return "";
-
-    return( papszRecord[iTargetField] );
-}
-
-/************************************************************************/
-/*                            CSVFilename()                             */
-/*                                                                      */
-/*      Return the full path to a particular CSV file.  This will       */
-/*      eventually be something the application can override.           */
-/************************************************************************/
-
-static const char *(*pfnCSVFilenameHook)(const char *) = NULL;
-
-const char * CSVFilename( const char *pszBasename )
-
-{
-    static char		szPath[512];
-
-    if( pfnCSVFilenameHook == NULL )
-    {
-        FILE	*fp = NULL;
-
-        if( getenv("GEOTIFF_CSV") != NULL )
-        {
-            sprintf( szPath, "%s/%s", getenv("GEOTIFF_CSV"), pszBasename );
-        }
-#ifdef CSV_DATA_DIR
-        else 
-        {
-            sprintf( szPath, "%s/%s", CSV_DATA_DIR, pszBasename );
-        }
-#else
-        else if( (fp = fopen( "/usr/local/share/epsg/csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "/usr/local/share/epsg/csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "share/epsg_csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "share/epsg_csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "/usr/share/epsg_csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "/usr/share/epsg_csv/%s", pszBasename );
-        }
-        else
-        {
-            sprintf( szPath, "/usr/local/share/epsg_csv/%s", pszBasename );
-        }
-#endif
-
-        if( fp != NULL )
-            fclose( fp );
-        
-        return( szPath );
-    }
-    else
-        return( pfnCSVFilenameHook( pszBasename ) );
-}
-
-/************************************************************************/
-/*                         SetCSVFilenameHook()                         */
-/*                                                                      */
-/*      Applications can use this to set a function that will           */
-/*      massage CSV filenames.                                          */
-/************************************************************************/
-
-/**
- * Override CSV file search method.
- *
- * @param CSVFileOverride The pointer to a function which will return the
- * full path for a given filename.
-  *
-
-This function allows an application to override how the GTIFGetDefn() and related function find the CSV (Comma Separated
-Value) values required. The pfnHook argument should be a pointer to a function that will take in a CSV filename and return a
-full path to the file. The returned string should be to an internal static buffer so that the caller doesn't have to free the result.
-
-<b>Example:</b><br>
-
-The listgeo utility uses the following override function if the user
-specified a CSV file directory with the -t commandline switch (argument
-put into CSVDirName).  <p>
-
-<pre>
-
-    ...
-
-
-    SetCSVFilenameHook( CSVFileOverride );
-
-    ...
-
-
-static const char *CSVFileOverride( const char * pszInput )
-
-{
-    static char         szPath[1024];
-
-#ifdef WIN32
-    sprintf( szPath, "%s\\%s", CSVDirName, pszInput );
-#else    
-    sprintf( szPath, "%s/%s", CSVDirName, pszInput );
-#endif    
-
-    return( szPath );
-}
-</pre>
-
-*/
-
-void SetCSVFilenameHook( const char *(*pfnNewHook)( const char * ) )
-
-{
-    pfnCSVFilenameHook = pfnNewHook;
-}
diff --git a/Utilities/otbgeotiff/cpl_serv.c b/Utilities/otbgeotiff/cpl_serv.c
deleted file mode 100644
index d9b59977efa8a3ed9cd46bd7f33145491b7136a6..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/cpl_serv.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/******************************************************************************
- * Copyright (c) 1998, 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.
- ******************************************************************************
- *
- * cpl_serv.c: Various Common Portability Library derived convenience functions
- *
- * $Log: cpl_serv.c,v $
- * Revision 1.8  2001/07/09 20:14:37  warmerda
- * Another problem freeing pszRLBuffer and not setting to NULL.
- *
- * Revision 1.7  2001/04/17 13:40:43  warmerda
- * fixed freeing of line buffer in CPLReadLine(), init ptr to NULL
- *
- * Revision 1.6  2001/03/05 04:56:17  warmerda
- * make it possible to deallocate CPLReadLine buffer
- *
- * Revision 1.5  2000/09/30 03:35:05  warmerda
- * Fixed CPLReadLine() to use avoid calling VSIRealloc() on a NULL pointer.
- *
- * Revision 1.4  1999/06/25 04:35:26  warmerda
- * Fixed to actually support long lines.
- *
- * Revision 1.3  1999/03/17 20:43:03  geotiff
- * Avoid use of size_t keyword
- *
- * Revision 1.2  1999/03/10 18:22:39  geotiff
- * Added string.h, fixed backslash escaping
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-
-#ifdef HAVE_STRING_H
-#  include <string.h>
-#endif
-#if defined(HAVE_STRINGS_H) && !defined(HAVE_STRING_H)
-#  include <strings.h>
-#endif
-
-/************************************************************************/
-/*                             CPLCalloc()                              */
-/************************************************************************/
-
-void *CPLCalloc( int nCount, int nSize )
-
-{
-    void	*pReturn;
-
-    if( nSize == 0 )
-        return NULL;
-    
-    pReturn = VSICalloc( nCount, nSize );
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLCalloc(): Out of memory allocating %d bytes.\n",
-                  nSize * nCount );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLMalloc()                              */
-/************************************************************************/
-
-void *CPLMalloc( int nSize )
-
-{
-    void	*pReturn;
-
-    if( nSize == 0 )
-        return NULL;
-    
-    pReturn = VSIMalloc( nSize );
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLMalloc(): Out of memory allocating %d bytes.\n",
-                  nSize );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLRealloc()                             */
-/************************************************************************/
-
-void * CPLRealloc( void * pData, int nNewSize )
-
-{
-    void	*pReturn;
-
-    if( pData == NULL )
-        pReturn = VSIMalloc( nNewSize );
-    else
-        pReturn = VSIRealloc( pData, nNewSize );
-    
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLRealloc(): Out of memory allocating %d bytes.\n",
-                  nNewSize );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLStrdup()                              */
-/************************************************************************/
-
-char *CPLStrdup( const char * pszString )
-
-{
-    char	*pszReturn;
-
-    if( pszString == NULL )
-        pszString = "";
-
-    pszReturn = VSIMalloc( strlen(pszString)+1 );
-        
-    if( pszReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLStrdup(): Out of memory allocating %d bytes.\n",
-                  strlen(pszString) );
-        
-    }
-
-    strcpy( pszReturn, pszString );
-    
-    return( pszReturn );
-}
-
-/************************************************************************/
-/*                            CPLReadLine()                             */
-/*                                                                      */
-/*      Read a line of text from the given file handle, taking care     */
-/*      to capture CR and/or LF and strip off ... equivelent of         */
-/*      DKReadLine().  Pointer to an internal buffer is returned.       */
-/*      The application shouldn't free it, or depend on it's value      */
-/*      past the next call to CPLReadLine()                             */
-/************************************************************************/
-
-const char *CPLReadLine( FILE * fp )
-
-{
-    static char	*pszRLBuffer = NULL;
-    static int	nRLBufferSize = 0;
-    int		nLength, nReadSoFar = 0;
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup case.                                                   */
-/* -------------------------------------------------------------------- */
-    if( fp == NULL )
-    {
-        CPLFree( pszRLBuffer );
-        pszRLBuffer = NULL;
-        nRLBufferSize = 0;
-        return NULL;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Loop reading chunks of the line till we get to the end of       */
-/*      the line.                                                       */
-/* -------------------------------------------------------------------- */
-    do {
-/* -------------------------------------------------------------------- */
-/*      Grow the working buffer if we have it nearly full.  Fail out    */
-/*      of read line if we can't reallocate it big enough (for          */
-/*      instance for a _very large_ file with no newlines).             */
-/* -------------------------------------------------------------------- */
-        if( nRLBufferSize-nReadSoFar < 128 )
-        {
-            nRLBufferSize = nRLBufferSize*2 + 128;
-            if( pszRLBuffer == NULL )
-                pszRLBuffer = (char *) VSIMalloc(nRLBufferSize);
-            else
-                pszRLBuffer = (char *) VSIRealloc(pszRLBuffer, nRLBufferSize);
-            if( pszRLBuffer == NULL )
-            {
-                nRLBufferSize = 0;
-                return NULL;
-            }
-        }
-
-/* -------------------------------------------------------------------- */
-/*      Do the actual read.                                             */
-/* -------------------------------------------------------------------- */
-        if( VSIFGets( pszRLBuffer+nReadSoFar, nRLBufferSize-nReadSoFar, fp )
-            == NULL )
-        {
-            CPLFree( pszRLBuffer );
-            pszRLBuffer = NULL;
-            nRLBufferSize = 0;
-
-            return NULL;
-        }
-
-        nReadSoFar = strlen(pszRLBuffer);
-
-    } while( nReadSoFar == nRLBufferSize - 1
-             && pszRLBuffer[nRLBufferSize-2] != 13
-             && pszRLBuffer[nRLBufferSize-2] != 10 );
-
-/* -------------------------------------------------------------------- */
-/*      Clear CR and LF off the end.                                    */
-/* -------------------------------------------------------------------- */
-    nLength = strlen(pszRLBuffer);
-    if( nLength > 0
-        && (pszRLBuffer[nLength-1] == 10 || pszRLBuffer[nLength-1] == 13) )
-    {
-        pszRLBuffer[--nLength] = '\0';
-    }
-    
-    if( nLength > 0
-        && (pszRLBuffer[nLength-1] == 10 || pszRLBuffer[nLength-1] == 13) )
-    {
-        pszRLBuffer[--nLength] = '\0';
-    }
-
-    return( pszRLBuffer );
-}
-
-
-/*=====================================================================
-                    StringList manipulation functions.
- =====================================================================*/
-
-/**********************************************************************
- *                       CSLAddString()
- *
- * Append a string to a StringList and return a pointer to the modified
- * StringList.
- * If the input StringList is NULL, then a new StringList is created.
- **********************************************************************/
-char **CSLAddString(char **papszStrList, const char *pszNewString)
-{
-    int nItems=0;
-
-    if (pszNewString == NULL)
-        return papszStrList;    /* Nothing to do!*/
-
-    /* Allocate room for the new string */
-    if (papszStrList == NULL)
-        papszStrList = (char**) CPLCalloc(2,sizeof(char*));
-    else
-    {
-        nItems = CSLCount(papszStrList);
-        papszStrList = (char**)CPLRealloc(papszStrList, 
-                                          (nItems+2)*sizeof(char*));
-    }
-
-    /* Copy the string in the list */
-    papszStrList[nItems] = CPLStrdup(pszNewString);
-    papszStrList[nItems+1] = NULL;
-
-    return papszStrList;
-}
-
-/**********************************************************************
- *                       CSLCount()
- *
- * Return the number of lines in a Stringlist.
- **********************************************************************/
-int CSLCount(char **papszStrList)
-{
-    int nItems=0;
-
-    if (papszStrList)
-    {
-        while(*papszStrList != NULL)
-        {
-            nItems++;
-            papszStrList++;
-        }
-    }
-
-    return nItems;
-}
-
-
-/************************************************************************/
-/*                            CSLGetField()                             */
-/*                                                                      */
-/*      Fetches the indicated field, being careful not to crash if      */
-/*      the field doesn't exist within this string list.  The           */
-/*      returned pointer should not be freed, and doesn't               */
-/*      necessarily last long.                                          */
-/************************************************************************/
-
-const char * CSLGetField( char ** papszStrList, int iField )
-
-{
-    int         i;
-
-    if( papszStrList == NULL || iField < 0 )
-        return( "" );
-
-    for( i = 0; i < iField+1; i++ )
-    {
-        if( papszStrList[i] == NULL )
-            return "";
-    }
-
-    return( papszStrList[iField] );
-}
-
-/**********************************************************************
- *                       CSLDestroy()
- *
- * Free all memory used by a StringList.
- **********************************************************************/
-void CSLDestroy(char **papszStrList)
-{
-    char **papszPtr;
-
-    if (papszStrList)
-    {
-        papszPtr = papszStrList;
-        while(*papszPtr != NULL)
-        {
-            CPLFree(*papszPtr);
-            papszPtr++;
-        }
-
-        CPLFree(papszStrList);
-    }
-}
-
-
-/**********************************************************************
- *                       CSLDuplicate()
- *
- * Allocate and return a copy of a StringList.
- **********************************************************************/
-char    **CSLDuplicate(char **papszStrList)
-{
-    char **papszNewList, **papszSrc, **papszDst;
-    int  nLines;
-
-    nLines = CSLCount(papszStrList);
-
-    if (nLines == 0)
-        return NULL;
-
-    papszNewList = (char **)CPLMalloc((nLines+1)*sizeof(char*));
-    papszSrc = papszStrList;
-    papszDst = papszNewList;
-
-    while(*papszSrc != NULL)
-    {
-        *papszDst = CPLStrdup(*papszSrc);
-
-        papszSrc++;
-        papszDst++;
-    }
-    *papszDst = NULL;
-
-    return papszNewList;
-}
-
-/**********************************************************************
- *                       CSLTokenizeString()
- *
- * Tokenizes a string and returns a StringList with one string for
- * each token.
- **********************************************************************/
-char    **CSLTokenizeString( const char *pszString )
-{
-    return CSLTokenizeStringComplex( pszString, " ", TRUE, FALSE );
-}
-
-/************************************************************************/
-/*                      CSLTokenizeStringComplex()                      */
-/*                                                                      */
-/*      The ultimate tokenizer?                                         */
-/************************************************************************/
-
-char ** CSLTokenizeStringComplex( const char * pszString,
-                                  const char * pszDelimiters,
-                                  int bHonourStrings, int bAllowEmptyTokens )
-
-{
-    char	**papszRetList = NULL;
-    char 	*pszToken;
-    int		nTokenMax, nTokenLen;
-
-    pszToken = (char *) CPLCalloc(10,1);
-    nTokenMax = 10;
-    
-    while( pszString != NULL && *pszString != '\0' )
-    {
-        int	bInString = FALSE;
-
-        nTokenLen = 0;
-        
-        /* Try to find the next delimeter, marking end of token */
-        for( ; *pszString != '\0'; pszString++ )
-        {
-
-            /* End if this is a delimeter skip it and break. */
-            if( !bInString && strchr(pszDelimiters, *pszString) != NULL )
-            {
-                pszString++;
-                break;
-            }
-            
-            /* If this is a quote, and we are honouring constant
-               strings, then process the constant strings, with out delim
-               but don't copy over the quotes */
-            if( bHonourStrings && *pszString == '"' )
-            {
-                if( bInString )
-                {
-                    bInString = FALSE;
-                    continue;
-                }
-                else
-                {
-                    bInString = TRUE;
-                    continue;
-                }
-            }
-
-            /* Within string constants we allow for escaped quotes, but
-               in processing them we will unescape the quotes */
-            if( bInString && pszString[0] == '\\' && pszString[1] == '"' )
-            {
-                pszString++;
-            }
-
-            /* Within string constants a \\ sequence reduces to \ */
-            else if( bInString
-                     && pszString[0] == '\\' && pszString[1] == '\\' )
-            {
-                pszString++;
-            }
-
-            if( nTokenLen >= nTokenMax-1 )
-            {
-                nTokenMax = nTokenMax * 2 + 10;
-                pszToken = (char *) CPLRealloc( pszToken, nTokenMax );
-            }
-
-            pszToken[nTokenLen] = *pszString;
-            nTokenLen++;
-        }
-
-        pszToken[nTokenLen] = '\0';
-
-        if( pszToken[0] != '\0' || bAllowEmptyTokens )
-        {
-            papszRetList = CSLAddString( papszRetList, pszToken );
-        }
-    }
-
-    if( papszRetList == NULL )
-        papszRetList = (char **) CPLCalloc(sizeof(char *),1);
-
-    CPLFree( pszToken );
-
-    return papszRetList;
-}
-
-/* static buffer to store the last error message.  We'll assume that error
- * messages cannot be longer than 2000 chars... which is quite reasonable
- * (that's 25 lines of 80 chars!!!)
- */
-static char gszCPLLastErrMsg[2000] = "";
-static int  gnCPLLastErrNo = 0;
-
-static void (*gpfnCPLErrorHandler)(CPLErr, int, const char *) = NULL;
-
-/**********************************************************************
- *                          CPLError()
- *
- * This function records an error code and displays the error message
- * to stderr.
- *
- * The error code can be accessed later using CPLGetLastErrNo()
- **********************************************************************/
-void    CPLError(CPLErr eErrClass, int err_no, const char *fmt, ...)
-{
-    va_list args;
-
-    /* Expand the error message 
-     */
-    va_start(args, fmt);
-    vsprintf(gszCPLLastErrMsg, fmt, args);
-    va_end(args);
-
-    /* If the user provided his own error handling function, then call
-     * it, otherwise print the error to stderr and return.
-     */
-    gnCPLLastErrNo = err_no;
-
-    if (gpfnCPLErrorHandler != NULL)
-    {
-        gpfnCPLErrorHandler(eErrClass, err_no, gszCPLLastErrMsg);
-    }
-    else
-    {
-        fprintf(stderr, "ERROR %d: %s\n", gnCPLLastErrNo, gszCPLLastErrMsg);
-    }
-
-    if( eErrClass == CE_Fatal )
-        abort();
-}
-
-/**********************************************************************
- *                          CPLErrorReset()
- *
- * Erase any traces of previous errors.
- **********************************************************************/
-void    CPLErrorReset()
-{
-    gnCPLLastErrNo = 0;
-    gszCPLLastErrMsg[0] = '\0';
-}
-
-
-/**********************************************************************
- *                          CPLGetLastErrorNo()
- *
- **********************************************************************/
-int     CPLGetLastErrorNo()
-{
-    return gnCPLLastErrNo;
-}
-
-/**********************************************************************
- *                          CPLGetLastErrorMsg()
- *
- **********************************************************************/
-const char* CPLGetLastErrorMsg()
-{
-    return gszCPLLastErrMsg;
-}
-
-/**********************************************************************
- *                          CPLSetErrorHandler()
- *
- * Allow the library's user to specify his own error handler function.
- *
- * A valid error handler is a C function with the following prototype:
- *
- *     void MyErrorHandler(int errno, const char *msg)
- *
- * Pass NULL to come back to the default behavior.
- **********************************************************************/
-
-void     CPLSetErrorHandler(void (*pfnErrorHandler)(CPLErr, int, const char *))
-{
-    gpfnCPLErrorHandler = pfnErrorHandler;
-}
-
-/************************************************************************/
-/*                             _CPLAssert()                             */
-/*                                                                      */
-/*      This function is called only when an assertion fails.           */
-/************************************************************************/
-
-void _CPLAssert( const char * pszExpression, const char * pszFile,
-                 int iLine )
-
-{
-    CPLError( CE_Fatal, CPLE_AssertionFailed,
-              "Assertion `%s' failed\n"
-              "in file `%s', line %d\n",
-              pszExpression, pszFile, iLine );
-}
diff --git a/Utilities/otbgeotiff/cpl_serv.h b/Utilities/otbgeotiff/cpl_serv.h
deleted file mode 100644
index 0d7e0008fc0d42db83cf98dd7d504677d9a43784..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/cpl_serv.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/******************************************************************************
- * Copyright (c) 1998, 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.
- ******************************************************************************
- *
- * cpl_serv.h
- *
- * This include file derived and simplified from the GDAL Common Portability
- * Library.
- */
-
-#ifndef CPL_SERV_H_INCLUDED
-#define CPL_SERV_H_INCLUDED
-
-/* ==================================================================== */
-/*	Standard include files.						*/
-/* ==================================================================== */
-
-#include "geo_config.h"
-#include <stdio.h>
-
-#include <math.h>
-
-#ifdef HAVE_STRING_H
-#  include <string.h>
-#endif
-#if defined(HAVE_STRINGS_H) && !defined(HAVE_STRING_H)
-#  include <strings.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-#endif
-
-/**********************************************************************
- * Do we want to build as a DLL on windows?
- **********************************************************************/
-#if !defined(CPL_DLL)
-#  if defined(_WIN32) && defined(BUILD_AS_DLL)
-#    define CPL_DLL     __declspec(dllexport)
-#  else
-#    define CPL_DLL
-#  endif
-#endif
-
-/* ==================================================================== */
-/*      Other standard services.                                        */
-/* ==================================================================== */
-#ifdef __cplusplus
-#  define CPL_C_START		extern "C" {
-#  define CPL_C_END		}
-#else
-#  define CPL_C_START
-#  define CPL_C_END
-#endif
-
-#ifndef NULL
-#  define NULL	0
-#endif
-
-#ifndef FALSE
-#  define FALSE	0
-#endif
-
-#ifndef TRUE
-#  define TRUE	1
-#endif
-
-#ifndef MAX
-#  define MIN(a,b)      ((a<b) ? a : b)
-#  define MAX(a,b)      ((a>b) ? a : b)
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifndef ABS
-#  define ABS(x)        ((x<0) ? (-1*(x)) : x)
-#endif
-
-#ifndef EQUAL
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#  define EQUALN(a,b,n)           (strnicmp(a,b,n)==0)
-#  define EQUAL(a,b)              (stricmp(a,b)==0)
-#else
-#  define EQUALN(a,b,n)           (strncasecmp(a,b,n)==0)
-#  define EQUAL(a,b)              (strcasecmp(a,b)==0)
-#endif
-#endif
-
-/* ==================================================================== */
-/*      VSI Services (just map directly onto Standard C services.       */
-/* ==================================================================== */
-
-#define VSIFOpen	fopen
-#define VSIFClose	fclose
-#define VSIFEof		feof
-#define VSIFPrintf	fprintf
-#define VSIFPuts	fputs
-#define VSIFPutc	fputc
-#define VSIFGets	fgets
-#define VSIRewind	rewind
-#define VSIFSeek        fseek
-#define VSIFTell        ftell
-#define VSIFRead        fread
-
-#ifndef notdef
-#define VSICalloc(x,y)	_GTIFcalloc(x*y)
-#define VSIMalloc	_GTIFcalloc
-#define VSIFree	        _GTIFFree
-#define VSIRealloc      _GTIFrealloc
-#else
-#define VSICalloc(x,y)	(((char *) _GTIFcalloc(x*y+4)) + 4)
-#define VSIMalloc(x)	(((char *) _GTIFcalloc((x)+4)) + 4)
-#define VSIFree(x)      _GTIFFree(((char *) (x)) - 4)
-#define VSIRealloc(p,n) (((char *) _GTIFrealloc(((char *)p)-4,(n)+4)) + 4)
-#endif
-
-/* -------------------------------------------------------------------- */
-/*      Safe malloc() API.  Thin cover over VSI functions with fatal    */
-/*      error reporting if memory allocation fails.                     */
-/* -------------------------------------------------------------------- */
-CPL_C_START
-
-#define CPLMalloc  gtCPLMalloc
-#define CPLCalloc  gtCPLCalloc
-#define CPLRealloc gtCPLRealloc
-#define CPLStrdup  gtCPLStrdup
-
-void CPL_DLL *CPLMalloc( int );
-void CPL_DLL *CPLCalloc( int, int );
-void CPL_DLL *CPLRealloc( void *, int );
-char CPL_DLL *CPLStrdup( const char * );
-
-#define CPLFree(x)	{ if( x != NULL ) VSIFree(x); }
-
-/* -------------------------------------------------------------------- */
-/*      Read a line from a text file, and strip of CR/LF.               */
-/* -------------------------------------------------------------------- */
-
-#define CPLReadLine gtCPLReadLine
-
-const char CPL_DLL *CPLReadLine( FILE * );
-
-/*=====================================================================
-                   Error handling functions (cpl_error.c)
- =====================================================================*/
-
-typedef enum
-{
-    CE_None = 0,
-    CE_Log = 1,
-    CE_Warning = 2,
-    CE_Failure = 3,
-    CE_Fatal = 4
-} CPLErr;
-
-#define CPLError      gtCPLError
-#define CPLErrorReset gtCPLErrorReset
-#define CPLGetLastErrorNo gtCPLGetLastErrorNo
-#define CPLGetLastErrorMsg gtCPLGetLastErrorMsg
-#define CPLSetErrorHandler gtCPLSetErrorHandler
-#define _CPLAssert    gt_CPLAssert
-
-void CPL_DLL CPLError(CPLErr eErrClass, int err_no, const char *fmt, ...);
-void CPL_DLL CPLErrorReset();
-int  CPL_DLL CPLGetLastErrorNo();
-const char CPL_DLL * CPLGetLastErrorMsg();
-void CPL_DLL CPLSetErrorHandler(void(*pfnErrorHandler)(CPLErr,int,
-                                                       const char *));
-void CPL_DLL _CPLAssert( const char *, const char *, int );
-
-#ifdef DEBUG
-#  define CPLAssert(expr)  ((expr) ? (void)(0) : _CPLAssert(#expr,__FILE__,__LINE__))
-#else
-#  define CPLAssert(expr)
-#endif
-
-CPL_C_END
-
-/* ==================================================================== */
-/*      Well known error codes.                                         */
-/* ==================================================================== */
-
-#define CPLE_AppDefined			1
-#define CPLE_OutOfMemory		2
-#define CPLE_FileIO			3
-#define CPLE_OpenFailed			4
-#define CPLE_IllegalArg			5
-#define CPLE_NotSupported		6
-#define CPLE_AssertionFailed		7
-#define CPLE_NoWriteAccess		8
-
-/*=====================================================================
-                   Stringlist functions (strlist.c)
- =====================================================================*/
-CPL_C_START
-
-#define CSLAddString gtCSLAddString
-#define CSLCount     gtCSLCount
-#define CSLGetField  gtCSLGetField
-#define CSLDestroy   gtCSLDestroy
-#define CSLDuplicate gtCSLDuplicate
-#define CSLTokenizeString gtCSLTokenizeString
-#define CSLTokenizeStringComplex gtCSLTokenizeStringComplex
-
-char CPL_DLL   **CSLAddString(char **papszStrList, const char *pszNewString);
-int  CPL_DLL   CSLCount(char **papszStrList);
-const char CPL_DLL *CSLGetField( char **, int );
-void CPL_DLL   CSLDestroy(char **papszStrList);
-char CPL_DLL   **CSLDuplicate(char **papszStrList);
-
-char CPL_DLL   **CSLTokenizeString(const char *pszString );
-char CPL_DLL   **CSLTokenizeStringComplex(const char *pszString,
-                                   const char *pszDelimiter,
-                                   int bHonourStrings, int bAllowEmptyTokens );
-
-/* ==================================================================== */
-/*      .csv file related functions (from cpl_csv.c)                    */
-/* ==================================================================== */
-
-typedef enum {
-    CC_ExactString,
-    CC_ApproxString,
-    CC_Integer
-} CSVCompareCriteria;
-
-#define CSVFilename gtCSVFilename
-#define CSVReadParseLine gtCSVReadParseLine
-#define CSVScanLines gtCSVScanLines
-#define CSVScanFile gtCSVScanFile
-#define CSVScanFileByName gtCSVScanFileByName
-#define CSVGetFieldId gtCSVGetFieldId
-#define CSVDeaccess gtCSVDeaccess
-#define CSVGetField gtCSVGetField
-#define SetCSVFilenameHook gtSetCSVFilenameHook
-#define CSVGetFileFieldId gtCSVGetFileFieldId
-
-const char CPL_DLL *CSVFilename( const char * );
-
-char CPL_DLL **CSVReadParseLine( FILE * );
-char CPL_DLL **CSVScanLines( FILE *, int, const char *, CSVCompareCriteria );
-char CPL_DLL **CSVScanFile( const char *, int, const char *,
-                            CSVCompareCriteria );
-char CPL_DLL **CSVScanFileByName( const char *, const char *, const char *,
-                                  CSVCompareCriteria );
-int CPL_DLL CSVGetFieldId( FILE *, const char * );
-int CPL_DLL CSVGetFileFieldId( const char *, const char * );
-
-void CPL_DLL CSVDeaccess( const char * );
-
-const char CPL_DLL *CSVGetField( const char *, const char *, const char *,
-                                 CSVCompareCriteria, const char * );
-
-void CPL_DLL SetCSVFilenameHook( const char *(*)(const char *) );
-
-CPL_C_END
-
-#endif /* ndef CPL_SERV_H_INCLUDED */
diff --git a/Utilities/otbgeotiff/defs.h b/Utilities/otbgeotiff/defs.h
deleted file mode 100644
index 365734f3816d42f97bdd883587c92116d549d300..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/defs.h
+++ /dev/null
@@ -1,13 +0,0 @@
-
-/*
- * This file is included by the CSV ".c" files in the csv directory.
- */
-
-#include <stdio.h>
-
-/* Data structures */
-typedef const char * datafile_rows_t;
-typedef struct datafile_s {
-  const char *name;
-  const datafile_rows_t **rows; 
-} datafile_t;
diff --git a/Utilities/otbgeotiff/epsg_datum.inc b/Utilities/otbgeotiff/epsg_datum.inc
deleted file mode 100644
index 198e78ff2ab669b7c241b7ad5f83125bd049f978..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_datum.inc
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *  EPSG/POSC Datum database -- GeoTIFF Rev. 0.2
- */
- 
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_datum.inc
-#endif /* OLD Codes */
-
-/* New datums */
-ValuePair(Datum_Dealul_Piscului_1970,6317)
-
-/* Datums for which only the ellipsoid is known */
-ValuePair(DatumE_Airy1830,	6001)
-ValuePair(DatumE_AiryModified1849,	6002)
-ValuePair(DatumE_AustralianNationalSpheroid,	6003)
-ValuePair(DatumE_Bessel1841,	6004)
-ValuePair(DatumE_BesselModified,	6005)
-ValuePair(DatumE_BesselNamibia,	6006)
-ValuePair(DatumE_Clarke1858,	6007)
-ValuePair(DatumE_Clarke1866,	6008)
-ValuePair(DatumE_Clarke1866Michigan,	6009)
-ValuePair(DatumE_Clarke1880_Benoit,	6010)
-ValuePair(DatumE_Clarke1880_IGN,	6011)
-ValuePair(DatumE_Clarke1880_RGS,	6012)
-ValuePair(DatumE_Clarke1880_Arc,	6013)
-ValuePair(DatumE_Clarke1880_SGA1922,	6014)
-ValuePair(DatumE_Everest1830_1937Adjustment,	6015)
-ValuePair(DatumE_Everest1830_1967Definition,	6016)
-ValuePair(DatumE_Everest1830_1975Definition,	6017)
-ValuePair(DatumE_Everest1830Modified,	6018)
-ValuePair(DatumE_GRS1980,	6019)
-ValuePair(DatumE_Helmert1906,	6020)
-ValuePair(DatumE_IndonesianNationalSpheroid,	6021)
-ValuePair(DatumE_International1924,	6022)
-ValuePair(DatumE_International1967,	6023)
-ValuePair(DatumE_Krassowsky1960,	6024)
-ValuePair(DatumE_NWL9D,	6025)
-ValuePair(DatumE_NWL10D,	6026)
-ValuePair(DatumE_Plessis1817,	6027)
-ValuePair(DatumE_Struve1860,	6028)
-ValuePair(DatumE_WarOffice,	6029)
-ValuePair(DatumE_WGS84,	6030)
-ValuePair(DatumE_GEM10C,	6031)
-ValuePair(DatumE_OSU86F,	6032)
-ValuePair(DatumE_OSU91A,	6033)
-ValuePair(DatumE_Clarke1880,	6034)
-ValuePair(DatumE_Sphere,	6035)
-
-/* standard datums */
-ValuePair(Datum_Adindan,	6201)
-ValuePair(Datum_Australian_Geodetic_Datum_1966,	6202)
-ValuePair(Datum_Australian_Geodetic_Datum_1984,	6203)
-ValuePair(Datum_Ain_el_Abd_1970,	6204)
-ValuePair(Datum_Afgooye,	6205)
-ValuePair(Datum_Agadez,	6206)
-ValuePair(Datum_Lisbon,	6207)
-ValuePair(Datum_Aratu,	6208)
-ValuePair(Datum_Arc_1950,	6209)
-ValuePair(Datum_Arc_1960,	6210)
-ValuePair(Datum_Batavia,	6211)
-ValuePair(Datum_Barbados,	6212)
-ValuePair(Datum_Beduaram,	6213)
-ValuePair(Datum_Beijing_1954,	6214)
-ValuePair(Datum_Reseau_National_Belge_1950,	6215)
-ValuePair(Datum_Bermuda_1957,	6216)
-ValuePair(Datum_Bern_1898,	6217)
-ValuePair(Datum_Bogota,	6218)
-ValuePair(Datum_Bukit_Rimpah,	6219)
-ValuePair(Datum_Camacupa,	6220)
-ValuePair(Datum_Campo_Inchauspe,	6221)
-ValuePair(Datum_Cape,	6222)
-ValuePair(Datum_Carthage,	6223)
-ValuePair(Datum_Chua,	6224)
-ValuePair(Datum_Corrego_Alegre,	6225)
-ValuePair(Datum_Cote_d_Ivoire,	6226)
-ValuePair(Datum_Deir_ez_Zor,	6227)
-ValuePair(Datum_Douala,	6228)
-ValuePair(Datum_Egypt_1907,	6229)
-ValuePair(Datum_European_Datum_1950,	6230)
-ValuePair(Datum_European_Datum_1987,	6231)
-ValuePair(Datum_Fahud,	6232)
-ValuePair(Datum_Gandajika_1970,	6233)
-ValuePair(Datum_Garoua,	6234)
-ValuePair(Datum_Guyane_Francaise,	6235)
-ValuePair(Datum_Hu_Tzu_Shan,	6236)
-ValuePair(Datum_Hungarian_Datum_1972,	6237)
-ValuePair(Datum_Indonesian_Datum_1974,	6238)
-ValuePair(Datum_Indian_1954,	6239)
-ValuePair(Datum_Indian_1975,	6240)
-ValuePair(Datum_Jamaica_1875,	6241)
-ValuePair(Datum_Jamaica_1969,	6242)
-ValuePair(Datum_Kalianpur,	6243)
-ValuePair(Datum_Kandawala,	6244)
-ValuePair(Datum_Kertau,	6245)
-ValuePair(Datum_Kuwait_Oil_Company,	6246)
-ValuePair(Datum_La_Canoa,	6247)
-ValuePair(Datum_Provisional_S_American_Datum_1956,	6248)
-ValuePair(Datum_Lake,	6249)
-ValuePair(Datum_Leigon,	6250)
-ValuePair(Datum_Liberia_1964,	6251)
-ValuePair(Datum_Lome,	6252)
-ValuePair(Datum_Luzon_1911,	6253)
-ValuePair(Datum_Hito_XVIII_1963,	6254)
-ValuePair(Datum_Herat_North,	6255)
-ValuePair(Datum_Mahe_1971,	6256)
-ValuePair(Datum_Makassar,	6257)
-ValuePair(Datum_European_Reference_System_1989,	6258)
-ValuePair(Datum_Malongo_1987,	6259)
-ValuePair(Datum_Manoca,	6260)
-ValuePair(Datum_Merchich,	6261)
-ValuePair(Datum_Massawa,	6262)
-ValuePair(Datum_Minna,	6263)
-ValuePair(Datum_Mhast,	6264)
-ValuePair(Datum_Monte_Mario,	6265)
-ValuePair(Datum_M_poraloko,	6266)
-ValuePair(Datum_North_American_Datum_1927,	6267)
-ValuePair(Datum_NAD_Michigan,	6268)
-ValuePair(Datum_North_American_Datum_1983,	6269)
-ValuePair(Datum_Nahrwan_1967,	6270)
-ValuePair(Datum_Naparima_1972,	6271)
-ValuePair(Datum_New_Zealand_Geodetic_Datum_1949,	6272)
-ValuePair(Datum_NGO_1948,	6273)
-ValuePair(Datum_Datum_73,	6274)
-ValuePair(Datum_Nouvelle_Triangulation_Francaise,	6275)
-ValuePair(Datum_NSWC_9Z_2,	6276)
-ValuePair(Datum_OSGB_1936,	6277)
-ValuePair(Datum_OSGB_1970_SN,	6278)
-ValuePair(Datum_OS_SN_1980,	6279)
-ValuePair(Datum_Padang_1884,	6280)
-ValuePair(Datum_Palestine_1923,	6281)
-ValuePair(Datum_Pointe_Noire,	6282)
-ValuePair(Datum_Geocentric_Datum_of_Australia_1994,	6283)
-ValuePair(Datum_Pulkovo_1942,	6284)
-ValuePair(Datum_Qatar,	6285)
-ValuePair(Datum_Qatar_1948,	6286)
-ValuePair(Datum_Qornoq,	6287)
-ValuePair(Datum_Loma_Quintana,	6288)
-ValuePair(Datum_Amersfoort,	6289)
-ValuePair(Datum_RT38,	6290)
-ValuePair(Datum_South_American_Datum_1969,	6291)
-ValuePair(Datum_Sapper_Hill_1943,	6292)
-ValuePair(Datum_Schwarzeck,	6293)
-ValuePair(Datum_Segora,	6294)
-ValuePair(Datum_Serindung,	6295)
-ValuePair(Datum_Sudan,	6296)
-ValuePair(Datum_Tananarive_1925,	6297)
-ValuePair(Datum_Timbalai_1948,	6298)
-ValuePair(Datum_TM65,	6299)
-ValuePair(Datum_TM75,	6300)
-ValuePair(Datum_Tokyo,	6301)
-ValuePair(Datum_Trinidad_1903,	6302)
-ValuePair(Datum_Trucial_Coast_1948,	6303)
-ValuePair(Datum_Voirol_1875,	6304)
-ValuePair(Datum_Voirol_Unifie_1960,	6305)
-ValuePair(Datum_Bern_1938,	6306)
-ValuePair(Datum_Nord_Sahara_1959,	6307)
-ValuePair(Datum_Stockholm_1938,	6308)
-ValuePair(Datum_Yacare,	6309)
-ValuePair(Datum_Yoff,	6310)
-ValuePair(Datum_Zanderij,	6311)
-ValuePair(Datum_Militar_Geographische_Institut,	6312)
-ValuePair(Datum_Reseau_National_Belge_1972,	6313)
-ValuePair(Datum_Deutsche_Hauptdreiecksnetz,	6314)
-ValuePair(Datum_Conakry_1905,	6315)
-ValuePair(Datum_WGS72,	6322)
-ValuePair(Datum_WGS72_Transit_Broadcast_Ephemeris,	6324)
-ValuePair(Datum_WGS84,	6326)
-ValuePair(Datum_Ancienne_Triangulation_Francaise,	6901)
-ValuePair(Datum_Nord_de_Guerre,	6902)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_ellipse.inc b/Utilities/otbgeotiff/epsg_ellipse.inc
deleted file mode 100644
index 95c14321f75cb0ea4b919a3861f8f1d6645b2257..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_ellipse.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  GeoTIFF Rev. 0.2  Ellipsoids
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_ellipse.inc
-#endif /* OLD Codes */
-
-ValuePair(Ellipse_Airy_1830,	7001)
-ValuePair(Ellipse_Airy_Modified_1849,	7002)
-ValuePair(Ellipse_Australian_National_Spheroid,	7003)
-ValuePair(Ellipse_Bessel_1841,	7004)
-ValuePair(Ellipse_Bessel_Modified,	7005)
-ValuePair(Ellipse_Bessel_Namibia,	7006)
-ValuePair(Ellipse_Clarke_1858,	7007)
-ValuePair(Ellipse_Clarke_1866,	7008)
-ValuePair(Ellipse_Clarke_1866_Michigan,	7009)
-ValuePair(Ellipse_Clarke_1880_Benoit,	7010)
-ValuePair(Ellipse_Clarke_1880_IGN,	7011)
-ValuePair(Ellipse_Clarke_1880_RGS,	7012)
-ValuePair(Ellipse_Clarke_1880_Arc,	7013)
-ValuePair(Ellipse_Clarke_1880_SGA_1922,	7014)
-ValuePair(Ellipse_Everest_1830_1937_Adjustment,	7015)
-ValuePair(Ellipse_Everest_1830_1967_Definition,	7016)
-ValuePair(Ellipse_Everest_1830_1975_Definition,	7017)
-ValuePair(Ellipse_Everest_1830_Modified,	7018)
-ValuePair(Ellipse_GRS_1980,	7019)
-ValuePair(Ellipse_Helmert_1906,	7020)
-ValuePair(Ellipse_Indonesian_National_Spheroid,	7021)
-ValuePair(Ellipse_International_1924,	7022)
-ValuePair(Ellipse_International_1967,	7023)
-ValuePair(Ellipse_Krassowsky_1940,	7024)
-ValuePair(Ellipse_NWL_9D,	7025)
-ValuePair(Ellipse_NWL_10D,	7026)
-ValuePair(Ellipse_Plessis_1817,	7027)
-ValuePair(Ellipse_Struve_1860,	7028)
-ValuePair(Ellipse_War_Office,	7029)
-ValuePair(Ellipse_WGS_84,	7030)
-ValuePair(Ellipse_GEM_10C,	7031)
-ValuePair(Ellipse_OSU86F,	7032)
-ValuePair(Ellipse_OSU91A,	7033)
-ValuePair(Ellipse_Clarke_1880,	7034)
-ValuePair(Ellipse_Sphere,	7035)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_gcs.inc b/Utilities/otbgeotiff/epsg_gcs.inc
deleted file mode 100644
index 4917964d8262475e47946acb4edd1856222d0ff2..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_gcs.inc
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *  EPSG/POSC GCS Codes -- GeoTIFF Rev. 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_gcs.inc
-#endif /* OLD Codes */
-
-/* Unspecified GCS based on ellipsoid */
-ValuePair(GCSE_Airy1830,	4001)
-ValuePair(GCSE_AiryModified1849,	4002)
-ValuePair(GCSE_AustralianNationalSpheroid,	4003)
-ValuePair(GCSE_Bessel1841,	4004)
-ValuePair(GCSE_BesselModified,	4005)
-ValuePair(GCSE_BesselNamibia,	4006)
-ValuePair(GCSE_Clarke1858,	4007)
-ValuePair(GCSE_Clarke1866,	4008)
-ValuePair(GCSE_Clarke1866Michigan,	4009)
-ValuePair(GCSE_Clarke1880_Benoit,	4010)
-ValuePair(GCSE_Clarke1880_IGN,	4011)
-ValuePair(GCSE_Clarke1880_RGS,	4012)
-ValuePair(GCSE_Clarke1880_Arc,	4013)
-ValuePair(GCSE_Clarke1880_SGA1922,	4014)
-ValuePair(GCSE_Everest1830_1937Adjustment,	4015)
-ValuePair(GCSE_Everest1830_1967Definition,	4016)
-ValuePair(GCSE_Everest1830_1975Definition,	4017)
-ValuePair(GCSE_Everest1830Modified,	4018)
-ValuePair(GCSE_GRS1980,	4019)
-ValuePair(GCSE_Helmert1906,	4020)
-ValuePair(GCSE_IndonesianNationalSpheroid,	4021)
-ValuePair(GCSE_International1924,	4022)
-ValuePair(GCSE_International1967,	4023)
-ValuePair(GCSE_Krassowsky1940,	4024)
-ValuePair(GCSE_NWL9D,	4025)
-ValuePair(GCSE_NWL10D,	4026)
-ValuePair(GCSE_Plessis1817,	4027)
-ValuePair(GCSE_Struve1860,	4028)
-ValuePair(GCSE_WarOffice,	4029)
-ValuePair(GCSE_WGS84,	4030)
-ValuePair(GCSE_GEM10C,	4031)
-ValuePair(GCSE_OSU86F,	4032)
-ValuePair(GCSE_OSU91A,	4033)
-ValuePair(GCSE_Clarke1880,	4034)
-ValuePair(GCSE_Sphere,	4035)
-
-/* New GCS */
-ValuePair(GCS_Greek,4120)
-ValuePair(GCS_GGRS87,4121)
-ValuePair(GCS_KKJ,4123)
-ValuePair(GCS_RT90,4124)
-ValuePair(GCS_EST92,4133)
-ValuePair(GCS_Dealul_Piscului_1970,4317)
-ValuePair(GCS_Greek_Athens,4815)
-
-/* Standard GCS */
-ValuePair(GCS_Adindan,	4201)
-ValuePair(GCS_AGD66,	4202)
-ValuePair(GCS_AGD84,	4203)
-ValuePair(GCS_Ain_el_Abd,	4204)
-ValuePair(GCS_Afgooye,	4205)
-ValuePair(GCS_Agadez,	4206)
-ValuePair(GCS_Lisbon,	4207)
-ValuePair(GCS_Aratu,	4208)
-ValuePair(GCS_Arc_1950,	4209)
-ValuePair(GCS_Arc_1960,	4210)
-ValuePair(GCS_Batavia,	4211)
-ValuePair(GCS_Barbados,	4212)
-ValuePair(GCS_Beduaram,	4213)
-ValuePair(GCS_Beijing_1954,	4214)
-ValuePair(GCS_Belge_1950,	4215)
-ValuePair(GCS_Bermuda_1957,	4216)
-ValuePair(GCS_Bern_1898,	4217)
-ValuePair(GCS_Bogota,	4218)
-ValuePair(GCS_Bukit_Rimpah,	4219)
-ValuePair(GCS_Camacupa,	4220)
-ValuePair(GCS_Campo_Inchauspe,	4221)
-ValuePair(GCS_Cape,	4222)
-ValuePair(GCS_Carthage,	4223)
-ValuePair(GCS_Chua,	4224)
-ValuePair(GCS_Corrego_Alegre,	4225)
-ValuePair(GCS_Cote_d_Ivoire,	4226)
-ValuePair(GCS_Deir_ez_Zor,	4227)
-ValuePair(GCS_Douala,	4228)
-ValuePair(GCS_Egypt_1907,	4229)
-ValuePair(GCS_ED50,	4230)
-ValuePair(GCS_ED87,	4231)
-ValuePair(GCS_Fahud,	4232)
-ValuePair(GCS_Gandajika_1970,	4233)
-ValuePair(GCS_Garoua,	4234)
-ValuePair(GCS_Guyane_Francaise,	4235)
-ValuePair(GCS_Hu_Tzu_Shan,	4236)
-ValuePair(GCS_HD72,	4237)
-ValuePair(GCS_ID74,	4238)
-ValuePair(GCS_Indian_1954,	4239)
-ValuePair(GCS_Indian_1975,	4240)
-ValuePair(GCS_Jamaica_1875,	4241)
-ValuePair(GCS_JAD69,	4242)
-ValuePair(GCS_Kalianpur,	4243)
-ValuePair(GCS_Kandawala,	4244)
-ValuePair(GCS_Kertau,	4245)
-ValuePair(GCS_KOC,	4246)
-ValuePair(GCS_La_Canoa,	4247)
-ValuePair(GCS_PSAD56,	4248)
-ValuePair(GCS_Lake,	4249)
-ValuePair(GCS_Leigon,	4250)
-ValuePair(GCS_Liberia_1964,	4251)
-ValuePair(GCS_Lome,	4252)
-ValuePair(GCS_Luzon_1911,	4253)
-ValuePair(GCS_Hito_XVIII_1963,	4254)
-ValuePair(GCS_Herat_North,	4255)
-ValuePair(GCS_Mahe_1971,	4256)
-ValuePair(GCS_Makassar,	4257)
-ValuePair(GCS_EUREF89,	4258)
-ValuePair(GCS_Malongo_1987,	4259)
-ValuePair(GCS_Manoca,	4260)
-ValuePair(GCS_Merchich,	4261)
-ValuePair(GCS_Massawa,	4262)
-ValuePair(GCS_Minna,	4263)
-ValuePair(GCS_Mhast,	4264)
-ValuePair(GCS_Monte_Mario,	4265)
-ValuePair(GCS_M_poraloko,	4266)
-ValuePair(GCS_NAD27,	4267)
-ValuePair(GCS_NAD_Michigan,	4268)
-ValuePair(GCS_NAD83,	4269)
-ValuePair(GCS_Nahrwan_1967,	4270)
-ValuePair(GCS_Naparima_1972,	4271)
-ValuePair(GCS_GD49,	4272)
-ValuePair(GCS_NGO_1948,	4273)
-ValuePair(GCS_Datum_73,	4274)
-ValuePair(GCS_NTF,	4275)
-ValuePair(GCS_NSWC_9Z_2,	4276)
-ValuePair(GCS_OSGB_1936,	4277)
-ValuePair(GCS_OSGB70,	4278)
-ValuePair(GCS_OS_SN80,	4279)
-ValuePair(GCS_Padang,	4280)
-ValuePair(GCS_Palestine_1923,	4281)
-ValuePair(GCS_Pointe_Noire,	4282)
-ValuePair(GCS_GDA94,	4283)
-ValuePair(GCS_Pulkovo_1942,	4284)
-ValuePair(GCS_Qatar,	4285)
-ValuePair(GCS_Qatar_1948,	4286)
-ValuePair(GCS_Qornoq,	4287)
-ValuePair(GCS_Loma_Quintana,	4288)
-ValuePair(GCS_Amersfoort,	4289)
-ValuePair(GCS_RT38,	4290)
-ValuePair(GCS_SAD69,	4291)
-ValuePair(GCS_Sapper_Hill_1943,	4292)
-ValuePair(GCS_Schwarzeck,	4293)
-ValuePair(GCS_Segora,	4294)
-ValuePair(GCS_Serindung,	4295)
-ValuePair(GCS_Sudan,	4296)
-ValuePair(GCS_Tananarive,	4297)
-ValuePair(GCS_Timbalai_1948,	4298)
-ValuePair(GCS_TM65,	4299)
-ValuePair(GCS_TM75,	4300)
-ValuePair(GCS_Tokyo,	4301)
-ValuePair(GCS_Trinidad_1903,	4302)
-ValuePair(GCS_TC_1948,	4303)
-ValuePair(GCS_Voirol_1875,	4304)
-ValuePair(GCS_Voirol_Unifie,	4305)
-ValuePair(GCS_Bern_1938,	4306)
-ValuePair(GCS_Nord_Sahara_1959,	4307)
-ValuePair(GCS_Stockholm_1938,	4308)
-ValuePair(GCS_Yacare,	4309)
-ValuePair(GCS_Yoff,	4310)
-ValuePair(GCS_Zanderij,	4311)
-ValuePair(GCS_MGI,	4312)
-ValuePair(GCS_Belge_1972,	4313)
-ValuePair(GCS_DHDN,	4314)
-ValuePair(GCS_Conakry_1905,	4315)
-ValuePair(GCS_WGS_72,	4322)
-ValuePair(GCS_WGS_72BE,	4324)
-ValuePair(GCS_WGS_84,	4326)
-ValuePair(GCS_Bern_1898_Bern,	4801)
-ValuePair(GCS_Bogota_Bogota,	4802)
-ValuePair(GCS_Lisbon_Lisbon,	4803)
-ValuePair(GCS_Makassar_Jakarta,	4804)
-ValuePair(GCS_MGI_Ferro,	4805)
-ValuePair(GCS_Monte_Mario_Rome,	4806)
-ValuePair(GCS_NTF_Paris,	4807)
-ValuePair(GCS_Padang_Jakarta,	4808)
-ValuePair(GCS_Belge_1950_Brussels,	4809)
-ValuePair(GCS_Tananarive_Paris,	4810)
-ValuePair(GCS_Voirol_1875_Paris,	4811)
-ValuePair(GCS_Voirol_Unifie_Paris,	4812)
-ValuePair(GCS_Batavia_Jakarta,	4813)
-ValuePair(GCS_ATF_Paris,	4901)
-ValuePair(GCS_NDG_Paris,	4902)
-/* End of list */
diff --git a/Utilities/otbgeotiff/epsg_pcs.inc b/Utilities/otbgeotiff/epsg_pcs.inc
deleted file mode 100644
index e8a5ef50a4c167e5147404d3d845d9f54f831054..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_pcs.inc
+++ /dev/null
@@ -1,1012 +0,0 @@
-/*
- *  EPSG PCS Codes - GeoTIFF Rev 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_pcs.inc
-#endif /* OLD Codes */
-
-/* Newer PCS */
-ValuePair(PCS_Hjorsey_1955_Lambert, 3053)
-ValuePair(PCS_ISN93_Lambert_1993, 3057)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_5,2176)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_6,2177)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_7,2177)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_8,2178)
-ValuePair(PCS_ETRS89_Poland_CS92,2180)
-
-/* New PCS */
-ValuePair(PCS_GGRS87_Greek_Grid,2100)
-ValuePair(PCS_KKJ_Finland_zone_1,2391)
-ValuePair(PCS_KKJ_Finland_zone_2,2392)
-ValuePair(PCS_KKJ_Finland_zone_3,2393)
-ValuePair(PCS_KKJ_Finland_zone_4,2394)
-ValuePair(PCS_RT90_2_5_gon_W,2400)
-ValuePair(PCS_Lietuvos_Koordinoei_Sistema_1994,2600)
-ValuePair(PCS_Estonian_Coordinate_System_of_1992,3300)
-ValuePair(PCS_HD72_EOV,23700)
-ValuePair(PCS_Dealul_Piscului_1970_Stereo_70,31700)
-
-ValuePair(PCS_Adindan_UTM_zone_37N,	20137)
-ValuePair(PCS_Adindan_UTM_zone_38N,	20138)
-ValuePair(PCS_AGD66_AMG_zone_48,	20248)
-ValuePair(PCS_AGD66_AMG_zone_49,	20249)
-ValuePair(PCS_AGD66_AMG_zone_50,	20250)
-ValuePair(PCS_AGD66_AMG_zone_51,	20251)
-ValuePair(PCS_AGD66_AMG_zone_52,	20252)
-ValuePair(PCS_AGD66_AMG_zone_53,	20253)
-ValuePair(PCS_AGD66_AMG_zone_54,	20254)
-ValuePair(PCS_AGD66_AMG_zone_55,	20255)
-ValuePair(PCS_AGD66_AMG_zone_56,	20256)
-ValuePair(PCS_AGD66_AMG_zone_57,	20257)
-ValuePair(PCS_AGD66_AMG_zone_58,	20258)
-ValuePair(PCS_AGD84_AMG_zone_48,	20348)
-ValuePair(PCS_AGD84_AMG_zone_49,	20349)
-ValuePair(PCS_AGD84_AMG_zone_50,	20350)
-ValuePair(PCS_AGD84_AMG_zone_51,	20351)
-ValuePair(PCS_AGD84_AMG_zone_52,	20352)
-ValuePair(PCS_AGD84_AMG_zone_53,	20353)
-ValuePair(PCS_AGD84_AMG_zone_54,	20354)
-ValuePair(PCS_AGD84_AMG_zone_55,	20355)
-ValuePair(PCS_AGD84_AMG_zone_56,	20356)
-ValuePair(PCS_AGD84_AMG_zone_57,	20357)
-ValuePair(PCS_AGD84_AMG_zone_58,	20358)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_37N,	20437)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_38N,	20438)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_39N,	20439)
-ValuePair(PCS_Ain_el_Abd_Bahrain_Grid,	20499)
-ValuePair(PCS_Afgooye_UTM_zone_38N,	20538)
-ValuePair(PCS_Afgooye_UTM_zone_39N,	20539)
-ValuePair(PCS_Lisbon_Portugese_Grid,	20700)
-ValuePair(PCS_Aratu_UTM_zone_22S,	20822)
-ValuePair(PCS_Aratu_UTM_zone_23S,	20823)
-ValuePair(PCS_Aratu_UTM_zone_24S,	20824)
-ValuePair(PCS_Arc_1950_Lo13,	20973)
-ValuePair(PCS_Arc_1950_Lo15,	20975)
-ValuePair(PCS_Arc_1950_Lo17,	20977)
-ValuePair(PCS_Arc_1950_Lo19,	20979)
-ValuePair(PCS_Arc_1950_Lo21,	20981)
-ValuePair(PCS_Arc_1950_Lo23,	20983)
-ValuePair(PCS_Arc_1950_Lo25,	20985)
-ValuePair(PCS_Arc_1950_Lo27,	20987)
-ValuePair(PCS_Arc_1950_Lo29,	20989)
-ValuePair(PCS_Arc_1950_Lo31,	20991)
-ValuePair(PCS_Arc_1950_Lo33,	20993)
-ValuePair(PCS_Arc_1950_Lo35,	20995)
-ValuePair(PCS_Batavia_NEIEZ,	21100)
-ValuePair(PCS_Batavia_UTM_zone_48S,	21148)
-ValuePair(PCS_Batavia_UTM_zone_49S,	21149)
-ValuePair(PCS_Batavia_UTM_zone_50S,	21150)
-ValuePair(PCS_Beijing_Gauss_zone_13,	21413)
-ValuePair(PCS_Beijing_Gauss_zone_14,	21414)
-ValuePair(PCS_Beijing_Gauss_zone_15,	21415)
-ValuePair(PCS_Beijing_Gauss_zone_16,	21416)
-ValuePair(PCS_Beijing_Gauss_zone_17,	21417)
-ValuePair(PCS_Beijing_Gauss_zone_18,	21418)
-ValuePair(PCS_Beijing_Gauss_zone_19,	21419)
-ValuePair(PCS_Beijing_Gauss_zone_20,	21420)
-ValuePair(PCS_Beijing_Gauss_zone_21,	21421)
-ValuePair(PCS_Beijing_Gauss_zone_22,	21422)
-ValuePair(PCS_Beijing_Gauss_zone_23,	21423)
-ValuePair(PCS_Beijing_Gauss_13N,	21473)
-ValuePair(PCS_Beijing_Gauss_14N,	21474)
-ValuePair(PCS_Beijing_Gauss_15N,	21475)
-ValuePair(PCS_Beijing_Gauss_16N,	21476)
-ValuePair(PCS_Beijing_Gauss_17N,	21477)
-ValuePair(PCS_Beijing_Gauss_18N,	21478)
-ValuePair(PCS_Beijing_Gauss_19N,	21479)
-ValuePair(PCS_Beijing_Gauss_20N,	21480)
-ValuePair(PCS_Beijing_Gauss_21N,	21481)
-ValuePair(PCS_Beijing_Gauss_22N,	21482)
-ValuePair(PCS_Beijing_Gauss_23N,	21483)
-ValuePair(PCS_Belge_Lambert_50,	21500)
-ValuePair(PCS_Bern_1898_Swiss_Old,	21790)
-ValuePair(PCS_Bogota_UTM_zone_17N,	21817)
-ValuePair(PCS_Bogota_UTM_zone_18N,	21818)
-ValuePair(PCS_Bogota_Colombia_3W,	21891)
-ValuePair(PCS_Bogota_Colombia_Bogota,	21892)
-ValuePair(PCS_Bogota_Colombia_3E,	21893)
-ValuePair(PCS_Bogota_Colombia_6E,	21894)
-ValuePair(PCS_Camacupa_UTM_32S,	22032)
-ValuePair(PCS_Camacupa_UTM_33S,	22033)
-ValuePair(PCS_C_Inchauspe_Argentina_1,	22191)
-ValuePair(PCS_C_Inchauspe_Argentina_2,	22192)
-ValuePair(PCS_C_Inchauspe_Argentina_3,	22193)
-ValuePair(PCS_C_Inchauspe_Argentina_4,	22194)
-ValuePair(PCS_C_Inchauspe_Argentina_5,	22195)
-ValuePair(PCS_C_Inchauspe_Argentina_6,	22196)
-ValuePair(PCS_C_Inchauspe_Argentina_7,	22197)
-ValuePair(PCS_Carthage_UTM_zone_32N,	22332)
-ValuePair(PCS_Carthage_Nord_Tunisie,	22391)
-ValuePair(PCS_Carthage_Sud_Tunisie,	22392)
-ValuePair(PCS_Corrego_Alegre_UTM_23S,	22523)
-ValuePair(PCS_Corrego_Alegre_UTM_24S,	22524)
-ValuePair(PCS_Douala_UTM_zone_32N,	22832)
-ValuePair(PCS_Egypt_1907_Red_Belt,	22992)
-ValuePair(PCS_Egypt_1907_Purple_Belt,	22993)
-ValuePair(PCS_Egypt_1907_Ext_Purple,	22994)
-ValuePair(PCS_ED50_UTM_zone_28N,	23028)
-ValuePair(PCS_ED50_UTM_zone_29N,	23029)
-ValuePair(PCS_ED50_UTM_zone_30N,	23030)
-ValuePair(PCS_ED50_UTM_zone_31N,	23031)
-ValuePair(PCS_ED50_UTM_zone_32N,	23032)
-ValuePair(PCS_ED50_UTM_zone_33N,	23033)
-ValuePair(PCS_ED50_UTM_zone_34N,	23034)
-ValuePair(PCS_ED50_UTM_zone_35N,	23035)
-ValuePair(PCS_ED50_UTM_zone_36N,	23036)
-ValuePair(PCS_ED50_UTM_zone_37N,	23037)
-ValuePair(PCS_ED50_UTM_zone_38N,	23038)
-ValuePair(PCS_Fahud_UTM_zone_39N,	23239)
-ValuePair(PCS_Fahud_UTM_zone_40N,	23240)
-ValuePair(PCS_Garoua_UTM_zone_33N,	23433)
-ValuePair(PCS_ID74_UTM_zone_46N,	23846)
-ValuePair(PCS_ID74_UTM_zone_47N,	23847)
-ValuePair(PCS_ID74_UTM_zone_48N,	23848)
-ValuePair(PCS_ID74_UTM_zone_49N,	23849)
-ValuePair(PCS_ID74_UTM_zone_50N,	23850)
-ValuePair(PCS_ID74_UTM_zone_51N,	23851)
-ValuePair(PCS_ID74_UTM_zone_52N,	23852)
-ValuePair(PCS_ID74_UTM_zone_53N,	23853)
-ValuePair(PCS_ID74_UTM_zone_46S,	23886)
-ValuePair(PCS_ID74_UTM_zone_47S,	23887)
-ValuePair(PCS_ID74_UTM_zone_48S,	23888)
-ValuePair(PCS_ID74_UTM_zone_49S,	23889)
-ValuePair(PCS_ID74_UTM_zone_50S,	23890)
-ValuePair(PCS_ID74_UTM_zone_51S,	23891)
-ValuePair(PCS_ID74_UTM_zone_52S,	23892)
-ValuePair(PCS_ID74_UTM_zone_53S,	23893)
-ValuePair(PCS_ID74_UTM_zone_54S,	23894)
-ValuePair(PCS_Indian_1954_UTM_47N,	23947)
-ValuePair(PCS_Indian_1954_UTM_48N,	23948)
-ValuePair(PCS_Indian_1975_UTM_47N,	24047)
-ValuePair(PCS_Indian_1975_UTM_48N,	24048)
-ValuePair(PCS_Jamaica_1875_Old_Grid,	24100)
-ValuePair(PCS_JAD69_Jamaica_Grid,	24200)
-ValuePair(PCS_Kalianpur_India_0,	24370)
-ValuePair(PCS_Kalianpur_India_I,	24371)
-ValuePair(PCS_Kalianpur_India_IIa,	24372)
-ValuePair(PCS_Kalianpur_India_IIIa,	24373)
-ValuePair(PCS_Kalianpur_India_IVa,	24374)
-ValuePair(PCS_Kalianpur_India_IIb,	24382)
-ValuePair(PCS_Kalianpur_India_IIIb,	24383)
-ValuePair(PCS_Kalianpur_India_IVb,	24384)
-ValuePair(PCS_Kertau_Singapore_Grid,	24500)
-ValuePair(PCS_Kertau_UTM_zone_47N,	24547)
-ValuePair(PCS_Kertau_UTM_zone_48N,	24548)
-ValuePair(PCS_La_Canoa_UTM_zone_20N,	24720)
-ValuePair(PCS_La_Canoa_UTM_zone_21N,	24721)
-ValuePair(PCS_PSAD56_UTM_zone_18N,	24818)
-ValuePair(PCS_PSAD56_UTM_zone_19N,	24819)
-ValuePair(PCS_PSAD56_UTM_zone_20N,	24820)
-ValuePair(PCS_PSAD56_UTM_zone_21N,	24821)
-ValuePair(PCS_PSAD56_UTM_zone_17S,	24877)
-ValuePair(PCS_PSAD56_UTM_zone_18S,	24878)
-ValuePair(PCS_PSAD56_UTM_zone_19S,	24879)
-ValuePair(PCS_PSAD56_UTM_zone_20S,	24880)
-ValuePair(PCS_PSAD56_Peru_west_zone,	24891)
-ValuePair(PCS_PSAD56_Peru_central,	24892)
-ValuePair(PCS_PSAD56_Peru_east_zone,	24893)
-ValuePair(PCS_Leigon_Ghana_Grid,	25000)
-ValuePair(PCS_Lome_UTM_zone_31N,	25231)
-ValuePair(PCS_Luzon_Philippines_I,	25391)
-ValuePair(PCS_Luzon_Philippines_II,	25392)
-ValuePair(PCS_Luzon_Philippines_III,	25393)
-ValuePair(PCS_Luzon_Philippines_IV,	25394)
-ValuePair(PCS_Luzon_Philippines_V,	25395)
-ValuePair(PCS_Makassar_NEIEZ,	25700)
-ValuePair(PCS_Malongo_1987_UTM_32S,	25932)
-ValuePair(PCS_Merchich_Nord_Maroc,	26191)
-ValuePair(PCS_Merchich_Sud_Maroc,	26192)
-ValuePair(PCS_Merchich_Sahara,	26193)
-ValuePair(PCS_Massawa_UTM_zone_37N,	26237)
-ValuePair(PCS_Minna_UTM_zone_31N,	26331)
-ValuePair(PCS_Minna_UTM_zone_32N,	26332)
-ValuePair(PCS_Minna_Nigeria_West,	26391)
-ValuePair(PCS_Minna_Nigeria_Mid_Belt,	26392)
-ValuePair(PCS_Minna_Nigeria_East,	26393)
-ValuePair(PCS_Mhast_UTM_zone_32S,	26432)
-ValuePair(PCS_Monte_Mario_Italy_1,	26591)
-ValuePair(PCS_Monte_Mario_Italy_2,	26592)
-ValuePair(PCS_M_poraloko_UTM_32N,	26632)
-ValuePair(PCS_M_poraloko_UTM_32S,	26692)
-ValuePair(PCS_NAD27_UTM_zone_3N,	26703)
-ValuePair(PCS_NAD27_UTM_zone_4N,	26704)
-ValuePair(PCS_NAD27_UTM_zone_5N,	26705)
-ValuePair(PCS_NAD27_UTM_zone_6N,	26706)
-ValuePair(PCS_NAD27_UTM_zone_7N,	26707)
-ValuePair(PCS_NAD27_UTM_zone_8N,	26708)
-ValuePair(PCS_NAD27_UTM_zone_9N,	26709)
-ValuePair(PCS_NAD27_UTM_zone_10N,	26710)
-ValuePair(PCS_NAD27_UTM_zone_11N,	26711)
-ValuePair(PCS_NAD27_UTM_zone_12N,	26712)
-ValuePair(PCS_NAD27_UTM_zone_13N,	26713)
-ValuePair(PCS_NAD27_UTM_zone_14N,	26714)
-ValuePair(PCS_NAD27_UTM_zone_15N,	26715)
-ValuePair(PCS_NAD27_UTM_zone_16N,	26716)
-ValuePair(PCS_NAD27_UTM_zone_17N,	26717)
-ValuePair(PCS_NAD27_UTM_zone_18N,	26718)
-ValuePair(PCS_NAD27_UTM_zone_19N,	26719)
-ValuePair(PCS_NAD27_UTM_zone_20N,	26720)
-ValuePair(PCS_NAD27_UTM_zone_21N,	26721)
-ValuePair(PCS_NAD27_UTM_zone_22N,	26722)
-ValuePair(PCS_NAD27_Alabama_East,	26729)
-ValuePair(PCS_NAD27_Alabama_West,	26730)
-ValuePair(PCS_NAD27_Alaska_zone_1,	26731)
-ValuePair(PCS_NAD27_Alaska_zone_2,	26732)
-ValuePair(PCS_NAD27_Alaska_zone_3,	26733)
-ValuePair(PCS_NAD27_Alaska_zone_4,	26734)
-ValuePair(PCS_NAD27_Alaska_zone_5,	26735)
-ValuePair(PCS_NAD27_Alaska_zone_6,	26736)
-ValuePair(PCS_NAD27_Alaska_zone_7,	26737)
-ValuePair(PCS_NAD27_Alaska_zone_8,	26738)
-ValuePair(PCS_NAD27_Alaska_zone_9,	26739)
-ValuePair(PCS_NAD27_Alaska_zone_10,	26740)
-ValuePair(PCS_NAD27_California_I,	26741)
-ValuePair(PCS_NAD27_California_II,	26742)
-ValuePair(PCS_NAD27_California_III,	26743)
-ValuePair(PCS_NAD27_California_IV,	26744)
-ValuePair(PCS_NAD27_California_V,	26745)
-ValuePair(PCS_NAD27_California_VI,	26746)
-ValuePair(PCS_NAD27_California_VII,	26747)
-ValuePair(PCS_NAD27_Arizona_East,	26748)
-ValuePair(PCS_NAD27_Arizona_Central,	26749)
-ValuePair(PCS_NAD27_Arizona_West,	26750)
-ValuePair(PCS_NAD27_Arkansas_North,	26751)
-ValuePair(PCS_NAD27_Arkansas_South,	26752)
-ValuePair(PCS_NAD27_Colorado_North,	26753)
-ValuePair(PCS_NAD27_Colorado_Central,	26754)
-ValuePair(PCS_NAD27_Colorado_South,	26755)
-ValuePair(PCS_NAD27_Connecticut,	26756)
-ValuePair(PCS_NAD27_Delaware,	26757)
-ValuePair(PCS_NAD27_Florida_East,	26758)
-ValuePair(PCS_NAD27_Florida_West,	26759)
-ValuePair(PCS_NAD27_Florida_North,	26760)
-ValuePair(PCS_NAD27_Hawaii_zone_1,	26761)
-ValuePair(PCS_NAD27_Hawaii_zone_2,	26762)
-ValuePair(PCS_NAD27_Hawaii_zone_3,	26763)
-ValuePair(PCS_NAD27_Hawaii_zone_4,	26764)
-ValuePair(PCS_NAD27_Hawaii_zone_5,	26765)
-ValuePair(PCS_NAD27_Georgia_East,	26766)
-ValuePair(PCS_NAD27_Georgia_West,	26767)
-ValuePair(PCS_NAD27_Idaho_East,	26768)
-ValuePair(PCS_NAD27_Idaho_Central,	26769)
-ValuePair(PCS_NAD27_Idaho_West,	26770)
-ValuePair(PCS_NAD27_Illinois_East,	26771)
-ValuePair(PCS_NAD27_Illinois_West,	26772)
-ValuePair(PCS_NAD27_Indiana_East,	26773)
-ValuePair(PCS_NAD27_BLM_14N_feet,	26774)
-ValuePair(PCS_NAD27_Indiana_West,	26774)
-ValuePair(PCS_NAD27_BLM_15N_feet,	26775)
-ValuePair(PCS_NAD27_Iowa_North,	26775)
-ValuePair(PCS_NAD27_BLM_16N_feet,	26776)
-ValuePair(PCS_NAD27_Iowa_South,	26776)
-ValuePair(PCS_NAD27_BLM_17N_feet,	26777)
-ValuePair(PCS_NAD27_Kansas_North,	26777)
-ValuePair(PCS_NAD27_Kansas_South,	26778)
-ValuePair(PCS_NAD27_Kentucky_North,	26779)
-ValuePair(PCS_NAD27_Kentucky_South,	26780)
-ValuePair(PCS_NAD27_Louisiana_North,	26781)
-ValuePair(PCS_NAD27_Louisiana_South,	26782)
-ValuePair(PCS_NAD27_Maine_East,	26783)
-ValuePair(PCS_NAD27_Maine_West,	26784)
-ValuePair(PCS_NAD27_Maryland,	26785)
-ValuePair(PCS_NAD27_Massachusetts,	26786)
-ValuePair(PCS_NAD27_Massachusetts_Is,	26787)
-ValuePair(PCS_NAD27_Michigan_North,	26788)
-ValuePair(PCS_NAD27_Michigan_Central,	26789)
-ValuePair(PCS_NAD27_Michigan_South,	26790)
-ValuePair(PCS_NAD27_Minnesota_North,	26791)
-ValuePair(PCS_NAD27_Minnesota_Cent,	26792)
-ValuePair(PCS_NAD27_Minnesota_South,	26793)
-ValuePair(PCS_NAD27_Mississippi_East,	26794)
-ValuePair(PCS_NAD27_Mississippi_West,	26795)
-ValuePair(PCS_NAD27_Missouri_East,	26796)
-ValuePair(PCS_NAD27_Missouri_Central,	26797)
-ValuePair(PCS_NAD27_Missouri_West,	26798)
-ValuePair(PCS_NAD_Michigan_Michigan_East,	26801)
-ValuePair(PCS_NAD_Michigan_Michigan_Old_Central,	26802)
-ValuePair(PCS_NAD_Michigan_Michigan_West,	26803)
-ValuePair(PCS_NAD83_UTM_zone_3N,	26903)
-ValuePair(PCS_NAD83_UTM_zone_4N,	26904)
-ValuePair(PCS_NAD83_UTM_zone_5N,	26905)
-ValuePair(PCS_NAD83_UTM_zone_6N,	26906)
-ValuePair(PCS_NAD83_UTM_zone_7N,	26907)
-ValuePair(PCS_NAD83_UTM_zone_8N,	26908)
-ValuePair(PCS_NAD83_UTM_zone_9N,	26909)
-ValuePair(PCS_NAD83_UTM_zone_10N,	26910)
-ValuePair(PCS_NAD83_UTM_zone_11N,	26911)
-ValuePair(PCS_NAD83_UTM_zone_12N,	26912)
-ValuePair(PCS_NAD83_UTM_zone_13N,	26913)
-ValuePair(PCS_NAD83_UTM_zone_14N,	26914)
-ValuePair(PCS_NAD83_UTM_zone_15N,	26915)
-ValuePair(PCS_NAD83_UTM_zone_16N,	26916)
-ValuePair(PCS_NAD83_UTM_zone_17N,	26917)
-ValuePair(PCS_NAD83_UTM_zone_18N,	26918)
-ValuePair(PCS_NAD83_UTM_zone_19N,	26919)
-ValuePair(PCS_NAD83_UTM_zone_20N,	26920)
-ValuePair(PCS_NAD83_UTM_zone_21N,	26921)
-ValuePair(PCS_NAD83_UTM_zone_22N,	26922)
-ValuePair(PCS_NAD83_UTM_zone_23N,	26923)
-ValuePair(PCS_NAD83_Alabama_East,	26929)
-ValuePair(PCS_NAD83_Alabama_West,	26930)
-ValuePair(PCS_NAD83_Alaska_zone_1,	26931)
-ValuePair(PCS_NAD83_Alaska_zone_2,	26932)
-ValuePair(PCS_NAD83_Alaska_zone_3,	26933)
-ValuePair(PCS_NAD83_Alaska_zone_4,	26934)
-ValuePair(PCS_NAD83_Alaska_zone_5,	26935)
-ValuePair(PCS_NAD83_Alaska_zone_6,	26936)
-ValuePair(PCS_NAD83_Alaska_zone_7,	26937)
-ValuePair(PCS_NAD83_Alaska_zone_8,	26938)
-ValuePair(PCS_NAD83_Alaska_zone_9,	26939)
-ValuePair(PCS_NAD83_Alaska_zone_10,	26940)
-ValuePair(PCS_NAD83_California_1,	26941)
-ValuePair(PCS_NAD83_California_2,	26942)
-ValuePair(PCS_NAD83_California_3,	26943)
-ValuePair(PCS_NAD83_California_4,	26944)
-ValuePair(PCS_NAD83_California_5,	26945)
-ValuePair(PCS_NAD83_California_6,	26946)
-ValuePair(PCS_NAD83_Arizona_East,	26948)
-ValuePair(PCS_NAD83_Arizona_Central,	26949)
-ValuePair(PCS_NAD83_Arizona_West,	26950)
-ValuePair(PCS_NAD83_Arkansas_North,	26951)
-ValuePair(PCS_NAD83_Arkansas_South,	26952)
-ValuePair(PCS_NAD83_Colorado_North,	26953)
-ValuePair(PCS_NAD83_Colorado_Central,	26954)
-ValuePair(PCS_NAD83_Colorado_South,	26955)
-ValuePair(PCS_NAD83_Connecticut,	26956)
-ValuePair(PCS_NAD83_Delaware,	26957)
-ValuePair(PCS_NAD83_Florida_East,	26958)
-ValuePair(PCS_NAD83_Florida_West,	26959)
-ValuePair(PCS_NAD83_Florida_North,	26960)
-ValuePair(PCS_NAD83_Hawaii_zone_1,	26961)
-ValuePair(PCS_NAD83_Hawaii_zone_2,	26962)
-ValuePair(PCS_NAD83_Hawaii_zone_3,	26963)
-ValuePair(PCS_NAD83_Hawaii_zone_4,	26964)
-ValuePair(PCS_NAD83_Hawaii_zone_5,	26965)
-ValuePair(PCS_NAD83_Georgia_East,	26966)
-ValuePair(PCS_NAD83_Georgia_West,	26967)
-ValuePair(PCS_NAD83_Idaho_East,	26968)
-ValuePair(PCS_NAD83_Idaho_Central,	26969)
-ValuePair(PCS_NAD83_Idaho_West,	26970)
-ValuePair(PCS_NAD83_Illinois_East,	26971)
-ValuePair(PCS_NAD83_Illinois_West,	26972)
-ValuePair(PCS_NAD83_Indiana_East,	26973)
-ValuePair(PCS_NAD83_Indiana_West,	26974)
-ValuePair(PCS_NAD83_Iowa_North,	26975)
-ValuePair(PCS_NAD83_Iowa_South,	26976)
-ValuePair(PCS_NAD83_Kansas_North,	26977)
-ValuePair(PCS_NAD83_Kansas_South,	26978)
-ValuePair(PCS_NAD83_Kentucky_North,	2205)
-ValuePair(PCS_NAD83_Kentucky_South,	26980)
-ValuePair(PCS_NAD83_Louisiana_North,	26981)
-ValuePair(PCS_NAD83_Louisiana_South,	26982)
-ValuePair(PCS_NAD83_Maine_East,	26983)
-ValuePair(PCS_NAD83_Maine_West,	26984)
-ValuePair(PCS_NAD83_Maryland,	26985)
-ValuePair(PCS_NAD83_Massachusetts,	26986)
-ValuePair(PCS_NAD83_Massachusetts_Is,	26987)
-ValuePair(PCS_NAD83_Michigan_North,	26988)
-ValuePair(PCS_NAD83_Michigan_Central,	26989)
-ValuePair(PCS_NAD83_Michigan_South,	26990)
-ValuePair(PCS_NAD83_Minnesota_North,	26991)
-ValuePair(PCS_NAD83_Minnesota_Cent,	26992)
-ValuePair(PCS_NAD83_Minnesota_South,	26993)
-ValuePair(PCS_NAD83_Mississippi_East,	26994)
-ValuePair(PCS_NAD83_Mississippi_West,	26995)
-ValuePair(PCS_NAD83_Missouri_East,	26996)
-ValuePair(PCS_NAD83_Missouri_Central,	26997)
-ValuePair(PCS_NAD83_Missouri_West,	26998)
-ValuePair(PCS_Nahrwan_1967_UTM_38N,	27038)
-ValuePair(PCS_Nahrwan_1967_UTM_39N,	27039)
-ValuePair(PCS_Nahrwan_1967_UTM_40N,	27040)
-ValuePair(PCS_Naparima_UTM_20N,	27120)
-ValuePair(PCS_GD49_NZ_Map_Grid,	27200)
-ValuePair(PCS_GD49_North_Island_Grid,	27291)
-ValuePair(PCS_GD49_South_Island_Grid,	27292)
-ValuePair(PCS_Datum_73_UTM_zone_29N,	27429)
-ValuePair(PCS_ATF_Nord_de_Guerre,	27500)
-ValuePair(PCS_NTF_France_I,	27581)
-ValuePair(PCS_NTF_France_II,	27582)
-ValuePair(PCS_NTF_France_III,	27583)
-ValuePair(PCS_NTF_Nord_France,	27591)
-ValuePair(PCS_NTF_Centre_France,	27592)
-ValuePair(PCS_NTF_Sud_France,	27593)
-ValuePair(PCS_British_National_Grid,	27700)
-ValuePair(PCS_Point_Noire_UTM_32S,	28232)
-ValuePair(PCS_GDA94_MGA_zone_48,	28348)
-ValuePair(PCS_GDA94_MGA_zone_49,	28349)
-ValuePair(PCS_GDA94_MGA_zone_50,	28350)
-ValuePair(PCS_GDA94_MGA_zone_51,	28351)
-ValuePair(PCS_GDA94_MGA_zone_52,	28352)
-ValuePair(PCS_GDA94_MGA_zone_53,	28353)
-ValuePair(PCS_GDA94_MGA_zone_54,	28354)
-ValuePair(PCS_GDA94_MGA_zone_55,	28355)
-ValuePair(PCS_GDA94_MGA_zone_56,	28356)
-ValuePair(PCS_GDA94_MGA_zone_57,	28357)
-ValuePair(PCS_GDA94_MGA_zone_58,	28358)
-ValuePair(PCS_Pulkovo_Gauss_zone_4,	28404)
-ValuePair(PCS_Pulkovo_Gauss_zone_5,	28405)
-ValuePair(PCS_Pulkovo_Gauss_zone_6,	28406)
-ValuePair(PCS_Pulkovo_Gauss_zone_7,	28407)
-ValuePair(PCS_Pulkovo_Gauss_zone_8,	28408)
-ValuePair(PCS_Pulkovo_Gauss_zone_9,	28409)
-ValuePair(PCS_Pulkovo_Gauss_zone_10,	28410)
-ValuePair(PCS_Pulkovo_Gauss_zone_11,	28411)
-ValuePair(PCS_Pulkovo_Gauss_zone_12,	28412)
-ValuePair(PCS_Pulkovo_Gauss_zone_13,	28413)
-ValuePair(PCS_Pulkovo_Gauss_zone_14,	28414)
-ValuePair(PCS_Pulkovo_Gauss_zone_15,	28415)
-ValuePair(PCS_Pulkovo_Gauss_zone_16,	28416)
-ValuePair(PCS_Pulkovo_Gauss_zone_17,	28417)
-ValuePair(PCS_Pulkovo_Gauss_zone_18,	28418)
-ValuePair(PCS_Pulkovo_Gauss_zone_19,	28419)
-ValuePair(PCS_Pulkovo_Gauss_zone_20,	28420)
-ValuePair(PCS_Pulkovo_Gauss_zone_21,	28421)
-ValuePair(PCS_Pulkovo_Gauss_zone_22,	28422)
-ValuePair(PCS_Pulkovo_Gauss_zone_23,	28423)
-ValuePair(PCS_Pulkovo_Gauss_zone_24,	28424)
-ValuePair(PCS_Pulkovo_Gauss_zone_25,	28425)
-ValuePair(PCS_Pulkovo_Gauss_zone_26,	28426)
-ValuePair(PCS_Pulkovo_Gauss_zone_27,	28427)
-ValuePair(PCS_Pulkovo_Gauss_zone_28,	28428)
-ValuePair(PCS_Pulkovo_Gauss_zone_29,	28429)
-ValuePair(PCS_Pulkovo_Gauss_zone_30,	28430)
-ValuePair(PCS_Pulkovo_Gauss_zone_31,	28431)
-ValuePair(PCS_Pulkovo_Gauss_zone_32,	28432)
-ValuePair(PCS_Pulkovo_Gauss_4N,	28464)
-ValuePair(PCS_Pulkovo_Gauss_5N,	28465)
-ValuePair(PCS_Pulkovo_Gauss_6N,	28466)
-ValuePair(PCS_Pulkovo_Gauss_7N,	28467)
-ValuePair(PCS_Pulkovo_Gauss_8N,	28468)
-ValuePair(PCS_Pulkovo_Gauss_9N,	28469)
-ValuePair(PCS_Pulkovo_Gauss_10N,	28470)
-ValuePair(PCS_Pulkovo_Gauss_11N,	28471)
-ValuePair(PCS_Pulkovo_Gauss_12N,	28472)
-ValuePair(PCS_Pulkovo_Gauss_13N,	28473)
-ValuePair(PCS_Pulkovo_Gauss_14N,	28474)
-ValuePair(PCS_Pulkovo_Gauss_15N,	28475)
-ValuePair(PCS_Pulkovo_Gauss_16N,	28476)
-ValuePair(PCS_Pulkovo_Gauss_17N,	28477)
-ValuePair(PCS_Pulkovo_Gauss_18N,	28478)
-ValuePair(PCS_Pulkovo_Gauss_19N,	28479)
-ValuePair(PCS_Pulkovo_Gauss_20N,	28480)
-ValuePair(PCS_Pulkovo_Gauss_21N,	28481)
-ValuePair(PCS_Pulkovo_Gauss_22N,	28482)
-ValuePair(PCS_Pulkovo_Gauss_23N,	28483)
-ValuePair(PCS_Pulkovo_Gauss_24N,	28484)
-ValuePair(PCS_Pulkovo_Gauss_25N,	28485)
-ValuePair(PCS_Pulkovo_Gauss_26N,	28486)
-ValuePair(PCS_Pulkovo_Gauss_27N,	28487)
-ValuePair(PCS_Pulkovo_Gauss_28N,	28488)
-ValuePair(PCS_Pulkovo_Gauss_29N,	28489)
-ValuePair(PCS_Pulkovo_Gauss_30N,	28490)
-ValuePair(PCS_Pulkovo_Gauss_31N,	28491)
-ValuePair(PCS_Pulkovo_Gauss_32N,	28492)
-ValuePair(PCS_Qatar_National_Grid,	28600)
-ValuePair(PCS_RD_Netherlands_Old,	28991)
-ValuePair(PCS_RD_Netherlands_New,	28992)
-ValuePair(PCS_SAD69_UTM_zone_18N,	29118)
-ValuePair(PCS_SAD69_UTM_zone_19N,	29119)
-ValuePair(PCS_SAD69_UTM_zone_20N,	29120)
-ValuePair(PCS_SAD69_UTM_zone_21N,	29121)
-ValuePair(PCS_SAD69_UTM_zone_22N,	29122)
-ValuePair(PCS_SAD69_UTM_zone_17S,	29177)
-ValuePair(PCS_SAD69_UTM_zone_18S,	29178)
-ValuePair(PCS_SAD69_UTM_zone_19S,	29179)
-ValuePair(PCS_SAD69_UTM_zone_20S,	29180)
-ValuePair(PCS_SAD69_UTM_zone_21S,	29181)
-ValuePair(PCS_SAD69_UTM_zone_22S,	29182)
-ValuePair(PCS_SAD69_UTM_zone_23S,	29183)
-ValuePair(PCS_SAD69_UTM_zone_24S,	29184)
-ValuePair(PCS_SAD69_UTM_zone_25S,	29185)
-ValuePair(PCS_Sapper_Hill_UTM_20S,	29220)
-ValuePair(PCS_Sapper_Hill_UTM_21S,	29221)
-ValuePair(PCS_Schwarzeck_UTM_33S,	29333)
-ValuePair(PCS_Sudan_UTM_zone_35N,	29635)
-ValuePair(PCS_Sudan_UTM_zone_36N,	29636)
-ValuePair(PCS_Tananarive_Laborde,	29700)
-ValuePair(PCS_Tananarive_UTM_38S,	29738)
-ValuePair(PCS_Tananarive_UTM_39S,	29739)
-ValuePair(PCS_Timbalai_1948_Borneo,	29800)
-ValuePair(PCS_Timbalai_1948_UTM_49N,	29849)
-ValuePair(PCS_Timbalai_1948_UTM_50N,	29850)
-ValuePair(PCS_TM65_Irish_Nat_Grid,	29900)
-ValuePair(PCS_Trinidad_1903_Trinidad,	30200)
-ValuePair(PCS_TC_1948_UTM_zone_39N,	30339)
-ValuePair(PCS_TC_1948_UTM_zone_40N,	30340)
-ValuePair(PCS_Voirol_N_Algerie_ancien,	30491)
-ValuePair(PCS_Voirol_S_Algerie_ancien,	30492)
-ValuePair(PCS_Voirol_Unifie_N_Algerie,	30591)
-ValuePair(PCS_Voirol_Unifie_S_Algerie,	30592)
-ValuePair(PCS_Bern_1938_Swiss_New,	30600)
-ValuePair(PCS_Nord_Sahara_UTM_29N,	30729)
-ValuePair(PCS_Nord_Sahara_UTM_30N,	30730)
-ValuePair(PCS_Nord_Sahara_UTM_31N,	30731)
-ValuePair(PCS_Nord_Sahara_UTM_32N,	30732)
-ValuePair(PCS_Yoff_UTM_zone_28N,	31028)
-ValuePair(PCS_Zanderij_UTM_zone_21N,	31121)
-ValuePair(PCS_MGI_Austria_West,	31291)
-ValuePair(PCS_MGI_Austria_Central,	31292)
-ValuePair(PCS_MGI_Austria_East,	31293)
-ValuePair(PCS_Belge_Lambert_72,	31300)
-ValuePair(PCS_DHDN_Germany_zone_1,	31491)
-ValuePair(PCS_DHDN_Germany_zone_2,	31492)
-ValuePair(PCS_DHDN_Germany_zone_3,	31493)
-ValuePair(PCS_DHDN_Germany_zone_4,	31494)
-ValuePair(PCS_DHDN_Germany_zone_5,	31495)
-ValuePair(PCS_NAD27_Montana_North,	32001)
-ValuePair(PCS_NAD27_Montana_Central,	32002)
-ValuePair(PCS_NAD27_Montana_South,	32003)
-ValuePair(PCS_NAD27_Nebraska_North,	32005)
-ValuePair(PCS_NAD27_Nebraska_South,	32006)
-ValuePair(PCS_NAD27_Nevada_East,	32007)
-ValuePair(PCS_NAD27_Nevada_Central,	32008)
-ValuePair(PCS_NAD27_Nevada_West,	32009)
-ValuePair(PCS_NAD27_New_Hampshire,	32010)
-ValuePair(PCS_NAD27_New_Jersey,	32011)
-ValuePair(PCS_NAD27_New_Mexico_East,	32012)
-ValuePair(PCS_NAD27_New_Mexico_Cent,	32013)
-ValuePair(PCS_NAD27_New_Mexico_West,	32014)
-ValuePair(PCS_NAD27_New_York_East,	32015)
-ValuePair(PCS_NAD27_New_York_Central,	32016)
-ValuePair(PCS_NAD27_New_York_West,	32017)
-ValuePair(PCS_NAD27_New_York_Long_Is,	32018)
-ValuePair(PCS_NAD27_North_Carolina,	32019)
-ValuePair(PCS_NAD27_North_Dakota_N,	32020)
-ValuePair(PCS_NAD27_North_Dakota_S,	32021)
-ValuePair(PCS_NAD27_Ohio_North,	32022)
-ValuePair(PCS_NAD27_Ohio_South,	32023)
-ValuePair(PCS_NAD27_Oklahoma_North,	32024)
-ValuePair(PCS_NAD27_Oklahoma_South,	32025)
-ValuePair(PCS_NAD27_Oregon_North,	32026)
-ValuePair(PCS_NAD27_Oregon_South,	32027)
-ValuePair(PCS_NAD27_Pennsylvania_N,	32028)
-ValuePair(PCS_NAD27_Pennsylvania_S,	32029)
-ValuePair(PCS_NAD27_Rhode_Island,	32030)
-ValuePair(PCS_NAD27_South_Carolina_N,	32031)
-ValuePair(PCS_NAD27_South_Carolina_S,	32033)
-ValuePair(PCS_NAD27_South_Dakota_N,	32034)
-ValuePair(PCS_NAD27_South_Dakota_S,	32035)
-ValuePair(PCS_NAD27_Tennessee,		2204)
-ValuePair(PCS_NAD27_Texas_North,	32037)
-ValuePair(PCS_NAD27_Texas_North_Cen,	32038)
-ValuePair(PCS_NAD27_Texas_Central,	32039)
-ValuePair(PCS_NAD27_Texas_South_Cen,	32040)
-ValuePair(PCS_NAD27_Texas_South,	32041)
-ValuePair(PCS_NAD27_Utah_North,	32042)
-ValuePair(PCS_NAD27_Utah_Central,	32043)
-ValuePair(PCS_NAD27_Utah_South,	32044)
-ValuePair(PCS_NAD27_Vermont,	32045)
-ValuePair(PCS_NAD27_Virginia_North,	32046)
-ValuePair(PCS_NAD27_Virginia_South,	32047)
-ValuePair(PCS_NAD27_Washington_North,	32048)
-ValuePair(PCS_NAD27_Washington_South,	32049)
-ValuePair(PCS_NAD27_West_Virginia_N,	32050)
-ValuePair(PCS_NAD27_West_Virginia_S,	32051)
-ValuePair(PCS_NAD27_Wisconsin_North,	32052)
-ValuePair(PCS_NAD27_Wisconsin_Cen,	32053)
-ValuePair(PCS_NAD27_Wisconsin_South,	32054)
-ValuePair(PCS_NAD27_Wyoming_East,	32055)
-ValuePair(PCS_NAD27_Wyoming_E_Cen,	32056)
-ValuePair(PCS_NAD27_Wyoming_W_Cen,	32057)
-ValuePair(PCS_NAD27_Wyoming_West,	32058)
-ValuePair(PCS_NAD27_Puerto_Rico,	32059)
-ValuePair(PCS_NAD27_St_Croix,	32060)
-ValuePair(PCS_NAD83_Montana,	32100)
-ValuePair(PCS_NAD83_Nebraska,	32104)
-ValuePair(PCS_NAD83_Nevada_East,	32107)
-ValuePair(PCS_NAD83_Nevada_Central,	32108)
-ValuePair(PCS_NAD83_Nevada_West,	32109)
-ValuePair(PCS_NAD83_New_Hampshire,	32110)
-ValuePair(PCS_NAD83_New_Jersey,	32111)
-ValuePair(PCS_NAD83_New_Mexico_East,	32112)
-ValuePair(PCS_NAD83_New_Mexico_Cent,	32113)
-ValuePair(PCS_NAD83_New_Mexico_West,	32114)
-ValuePair(PCS_NAD83_New_York_East,	32115)
-ValuePair(PCS_NAD83_New_York_Central,	32116)
-ValuePair(PCS_NAD83_New_York_West,	32117)
-ValuePair(PCS_NAD83_New_York_Long_Is,	32118)
-ValuePair(PCS_NAD83_North_Carolina,	32119)
-ValuePair(PCS_NAD83_North_Dakota_N,	32120)
-ValuePair(PCS_NAD83_North_Dakota_S,	32121)
-ValuePair(PCS_NAD83_Ohio_North,	32122)
-ValuePair(PCS_NAD83_Ohio_South,	32123)
-ValuePair(PCS_NAD83_Oklahoma_North,	32124)
-ValuePair(PCS_NAD83_Oklahoma_South,	32125)
-ValuePair(PCS_NAD83_Oregon_North,	32126)
-ValuePair(PCS_NAD83_Oregon_South,	32127)
-ValuePair(PCS_NAD83_Pennsylvania_N,	32128)
-ValuePair(PCS_NAD83_Pennsylvania_S,	32129)
-ValuePair(PCS_NAD83_Rhode_Island,	32130)
-ValuePair(PCS_NAD83_South_Carolina,	32133)
-ValuePair(PCS_NAD83_South_Dakota_N,	32134)
-ValuePair(PCS_NAD83_South_Dakota_S,	32135)
-ValuePair(PCS_NAD83_Tennessee,	32136)
-ValuePair(PCS_NAD83_Texas_North,	32137)
-ValuePair(PCS_NAD83_Texas_North_Cen,	32138)
-ValuePair(PCS_NAD83_Texas_Central,	32139)
-ValuePair(PCS_NAD83_Texas_South_Cen,	32140)
-ValuePair(PCS_NAD83_Texas_South,	32141)
-ValuePair(PCS_NAD83_Utah_North,	32142)
-ValuePair(PCS_NAD83_Utah_Central,	32143)
-ValuePair(PCS_NAD83_Utah_South,	32144)
-ValuePair(PCS_NAD83_Vermont,	32145)
-ValuePair(PCS_NAD83_Virginia_North,	32146)
-ValuePair(PCS_NAD83_Virginia_South,	32147)
-ValuePair(PCS_NAD83_Washington_North,	32148)
-ValuePair(PCS_NAD83_Washington_South,	32149)
-ValuePair(PCS_NAD83_West_Virginia_N,	32150)
-ValuePair(PCS_NAD83_West_Virginia_S,	32151)
-ValuePair(PCS_NAD83_Wisconsin_North,	32152)
-ValuePair(PCS_NAD83_Wisconsin_Cen,	32153)
-ValuePair(PCS_NAD83_Wisconsin_South,	32154)
-ValuePair(PCS_NAD83_Wyoming_East,	32155)
-ValuePair(PCS_NAD83_Wyoming_E_Cen,	32156)
-ValuePair(PCS_NAD83_Wyoming_W_Cen,	32157)
-ValuePair(PCS_NAD83_Wyoming_West,	32158)
-ValuePair(PCS_NAD83_Puerto_Rico_Virgin_Is,	32161)
-ValuePair(PCS_WGS72_UTM_zone_1N,	32201)
-ValuePair(PCS_WGS72_UTM_zone_2N,	32202)
-ValuePair(PCS_WGS72_UTM_zone_3N,	32203)
-ValuePair(PCS_WGS72_UTM_zone_4N,	32204)
-ValuePair(PCS_WGS72_UTM_zone_5N,	32205)
-ValuePair(PCS_WGS72_UTM_zone_6N,	32206)
-ValuePair(PCS_WGS72_UTM_zone_7N,	32207)
-ValuePair(PCS_WGS72_UTM_zone_8N,	32208)
-ValuePair(PCS_WGS72_UTM_zone_9N,	32209)
-ValuePair(PCS_WGS72_UTM_zone_10N,	32210)
-ValuePair(PCS_WGS72_UTM_zone_11N,	32211)
-ValuePair(PCS_WGS72_UTM_zone_12N,	32212)
-ValuePair(PCS_WGS72_UTM_zone_13N,	32213)
-ValuePair(PCS_WGS72_UTM_zone_14N,	32214)
-ValuePair(PCS_WGS72_UTM_zone_15N,	32215)
-ValuePair(PCS_WGS72_UTM_zone_16N,	32216)
-ValuePair(PCS_WGS72_UTM_zone_17N,	32217)
-ValuePair(PCS_WGS72_UTM_zone_18N,	32218)
-ValuePair(PCS_WGS72_UTM_zone_19N,	32219)
-ValuePair(PCS_WGS72_UTM_zone_20N,	32220)
-ValuePair(PCS_WGS72_UTM_zone_21N,	32221)
-ValuePair(PCS_WGS72_UTM_zone_22N,	32222)
-ValuePair(PCS_WGS72_UTM_zone_23N,	32223)
-ValuePair(PCS_WGS72_UTM_zone_24N,	32224)
-ValuePair(PCS_WGS72_UTM_zone_25N,	32225)
-ValuePair(PCS_WGS72_UTM_zone_26N,	32226)
-ValuePair(PCS_WGS72_UTM_zone_27N,	32227)
-ValuePair(PCS_WGS72_UTM_zone_28N,	32228)
-ValuePair(PCS_WGS72_UTM_zone_29N,	32229)
-ValuePair(PCS_WGS72_UTM_zone_30N,	32230)
-ValuePair(PCS_WGS72_UTM_zone_31N,	32231)
-ValuePair(PCS_WGS72_UTM_zone_32N,	32232)
-ValuePair(PCS_WGS72_UTM_zone_33N,	32233)
-ValuePair(PCS_WGS72_UTM_zone_34N,	32234)
-ValuePair(PCS_WGS72_UTM_zone_35N,	32235)
-ValuePair(PCS_WGS72_UTM_zone_36N,	32236)
-ValuePair(PCS_WGS72_UTM_zone_37N,	32237)
-ValuePair(PCS_WGS72_UTM_zone_38N,	32238)
-ValuePair(PCS_WGS72_UTM_zone_39N,	32239)
-ValuePair(PCS_WGS72_UTM_zone_40N,	32240)
-ValuePair(PCS_WGS72_UTM_zone_41N,	32241)
-ValuePair(PCS_WGS72_UTM_zone_42N,	32242)
-ValuePair(PCS_WGS72_UTM_zone_43N,	32243)
-ValuePair(PCS_WGS72_UTM_zone_44N,	32244)
-ValuePair(PCS_WGS72_UTM_zone_45N,	32245)
-ValuePair(PCS_WGS72_UTM_zone_46N,	32246)
-ValuePair(PCS_WGS72_UTM_zone_47N,	32247)
-ValuePair(PCS_WGS72_UTM_zone_48N,	32248)
-ValuePair(PCS_WGS72_UTM_zone_49N,	32249)
-ValuePair(PCS_WGS72_UTM_zone_50N,	32250)
-ValuePair(PCS_WGS72_UTM_zone_51N,	32251)
-ValuePair(PCS_WGS72_UTM_zone_52N,	32252)
-ValuePair(PCS_WGS72_UTM_zone_53N,	32253)
-ValuePair(PCS_WGS72_UTM_zone_54N,	32254)
-ValuePair(PCS_WGS72_UTM_zone_55N,	32255)
-ValuePair(PCS_WGS72_UTM_zone_56N,	32256)
-ValuePair(PCS_WGS72_UTM_zone_57N,	32257)
-ValuePair(PCS_WGS72_UTM_zone_58N,	32258)
-ValuePair(PCS_WGS72_UTM_zone_59N,	32259)
-ValuePair(PCS_WGS72_UTM_zone_60N,	32260)
-ValuePair(PCS_WGS72_UTM_zone_1S,	32301)
-ValuePair(PCS_WGS72_UTM_zone_2S,	32302)
-ValuePair(PCS_WGS72_UTM_zone_3S,	32303)
-ValuePair(PCS_WGS72_UTM_zone_4S,	32304)
-ValuePair(PCS_WGS72_UTM_zone_5S,	32305)
-ValuePair(PCS_WGS72_UTM_zone_6S,	32306)
-ValuePair(PCS_WGS72_UTM_zone_7S,	32307)
-ValuePair(PCS_WGS72_UTM_zone_8S,	32308)
-ValuePair(PCS_WGS72_UTM_zone_9S,	32309)
-ValuePair(PCS_WGS72_UTM_zone_10S,	32310)
-ValuePair(PCS_WGS72_UTM_zone_11S,	32311)
-ValuePair(PCS_WGS72_UTM_zone_12S,	32312)
-ValuePair(PCS_WGS72_UTM_zone_13S,	32313)
-ValuePair(PCS_WGS72_UTM_zone_14S,	32314)
-ValuePair(PCS_WGS72_UTM_zone_15S,	32315)
-ValuePair(PCS_WGS72_UTM_zone_16S,	32316)
-ValuePair(PCS_WGS72_UTM_zone_17S,	32317)
-ValuePair(PCS_WGS72_UTM_zone_18S,	32318)
-ValuePair(PCS_WGS72_UTM_zone_19S,	32319)
-ValuePair(PCS_WGS72_UTM_zone_20S,	32320)
-ValuePair(PCS_WGS72_UTM_zone_21S,	32321)
-ValuePair(PCS_WGS72_UTM_zone_22S,	32322)
-ValuePair(PCS_WGS72_UTM_zone_23S,	32323)
-ValuePair(PCS_WGS72_UTM_zone_24S,	32324)
-ValuePair(PCS_WGS72_UTM_zone_25S,	32325)
-ValuePair(PCS_WGS72_UTM_zone_26S,	32326)
-ValuePair(PCS_WGS72_UTM_zone_27S,	32327)
-ValuePair(PCS_WGS72_UTM_zone_28S,	32328)
-ValuePair(PCS_WGS72_UTM_zone_29S,	32329)
-ValuePair(PCS_WGS72_UTM_zone_30S,	32330)
-ValuePair(PCS_WGS72_UTM_zone_31S,	32331)
-ValuePair(PCS_WGS72_UTM_zone_32S,	32332)
-ValuePair(PCS_WGS72_UTM_zone_33S,	32333)
-ValuePair(PCS_WGS72_UTM_zone_34S,	32334)
-ValuePair(PCS_WGS72_UTM_zone_35S,	32335)
-ValuePair(PCS_WGS72_UTM_zone_36S,	32336)
-ValuePair(PCS_WGS72_UTM_zone_37S,	32337)
-ValuePair(PCS_WGS72_UTM_zone_38S,	32338)
-ValuePair(PCS_WGS72_UTM_zone_39S,	32339)
-ValuePair(PCS_WGS72_UTM_zone_40S,	32340)
-ValuePair(PCS_WGS72_UTM_zone_41S,	32341)
-ValuePair(PCS_WGS72_UTM_zone_42S,	32342)
-ValuePair(PCS_WGS72_UTM_zone_43S,	32343)
-ValuePair(PCS_WGS72_UTM_zone_44S,	32344)
-ValuePair(PCS_WGS72_UTM_zone_45S,	32345)
-ValuePair(PCS_WGS72_UTM_zone_46S,	32346)
-ValuePair(PCS_WGS72_UTM_zone_47S,	32347)
-ValuePair(PCS_WGS72_UTM_zone_48S,	32348)
-ValuePair(PCS_WGS72_UTM_zone_49S,	32349)
-ValuePair(PCS_WGS72_UTM_zone_50S,	32350)
-ValuePair(PCS_WGS72_UTM_zone_51S,	32351)
-ValuePair(PCS_WGS72_UTM_zone_52S,	32352)
-ValuePair(PCS_WGS72_UTM_zone_53S,	32353)
-ValuePair(PCS_WGS72_UTM_zone_54S,	32354)
-ValuePair(PCS_WGS72_UTM_zone_55S,	32355)
-ValuePair(PCS_WGS72_UTM_zone_56S,	32356)
-ValuePair(PCS_WGS72_UTM_zone_57S,	32357)
-ValuePair(PCS_WGS72_UTM_zone_58S,	32358)
-ValuePair(PCS_WGS72_UTM_zone_59S,	32359)
-ValuePair(PCS_WGS72_UTM_zone_60S,	32360)
-ValuePair(PCS_WGS72BE_UTM_zone_1N,	32401)
-ValuePair(PCS_WGS72BE_UTM_zone_2N,	32402)
-ValuePair(PCS_WGS72BE_UTM_zone_3N,	32403)
-ValuePair(PCS_WGS72BE_UTM_zone_4N,	32404)
-ValuePair(PCS_WGS72BE_UTM_zone_5N,	32405)
-ValuePair(PCS_WGS72BE_UTM_zone_6N,	32406)
-ValuePair(PCS_WGS72BE_UTM_zone_7N,	32407)
-ValuePair(PCS_WGS72BE_UTM_zone_8N,	32408)
-ValuePair(PCS_WGS72BE_UTM_zone_9N,	32409)
-ValuePair(PCS_WGS72BE_UTM_zone_10N,	32410)
-ValuePair(PCS_WGS72BE_UTM_zone_11N,	32411)
-ValuePair(PCS_WGS72BE_UTM_zone_12N,	32412)
-ValuePair(PCS_WGS72BE_UTM_zone_13N,	32413)
-ValuePair(PCS_WGS72BE_UTM_zone_14N,	32414)
-ValuePair(PCS_WGS72BE_UTM_zone_15N,	32415)
-ValuePair(PCS_WGS72BE_UTM_zone_16N,	32416)
-ValuePair(PCS_WGS72BE_UTM_zone_17N,	32417)
-ValuePair(PCS_WGS72BE_UTM_zone_18N,	32418)
-ValuePair(PCS_WGS72BE_UTM_zone_19N,	32419)
-ValuePair(PCS_WGS72BE_UTM_zone_20N,	32420)
-ValuePair(PCS_WGS72BE_UTM_zone_21N,	32421)
-ValuePair(PCS_WGS72BE_UTM_zone_22N,	32422)
-ValuePair(PCS_WGS72BE_UTM_zone_23N,	32423)
-ValuePair(PCS_WGS72BE_UTM_zone_24N,	32424)
-ValuePair(PCS_WGS72BE_UTM_zone_25N,	32425)
-ValuePair(PCS_WGS72BE_UTM_zone_26N,	32426)
-ValuePair(PCS_WGS72BE_UTM_zone_27N,	32427)
-ValuePair(PCS_WGS72BE_UTM_zone_28N,	32428)
-ValuePair(PCS_WGS72BE_UTM_zone_29N,	32429)
-ValuePair(PCS_WGS72BE_UTM_zone_30N,	32430)
-ValuePair(PCS_WGS72BE_UTM_zone_31N,	32431)
-ValuePair(PCS_WGS72BE_UTM_zone_32N,	32432)
-ValuePair(PCS_WGS72BE_UTM_zone_33N,	32433)
-ValuePair(PCS_WGS72BE_UTM_zone_34N,	32434)
-ValuePair(PCS_WGS72BE_UTM_zone_35N,	32435)
-ValuePair(PCS_WGS72BE_UTM_zone_36N,	32436)
-ValuePair(PCS_WGS72BE_UTM_zone_37N,	32437)
-ValuePair(PCS_WGS72BE_UTM_zone_38N,	32438)
-ValuePair(PCS_WGS72BE_UTM_zone_39N,	32439)
-ValuePair(PCS_WGS72BE_UTM_zone_40N,	32440)
-ValuePair(PCS_WGS72BE_UTM_zone_41N,	32441)
-ValuePair(PCS_WGS72BE_UTM_zone_42N,	32442)
-ValuePair(PCS_WGS72BE_UTM_zone_43N,	32443)
-ValuePair(PCS_WGS72BE_UTM_zone_44N,	32444)
-ValuePair(PCS_WGS72BE_UTM_zone_45N,	32445)
-ValuePair(PCS_WGS72BE_UTM_zone_46N,	32446)
-ValuePair(PCS_WGS72BE_UTM_zone_47N,	32447)
-ValuePair(PCS_WGS72BE_UTM_zone_48N,	32448)
-ValuePair(PCS_WGS72BE_UTM_zone_49N,	32449)
-ValuePair(PCS_WGS72BE_UTM_zone_50N,	32450)
-ValuePair(PCS_WGS72BE_UTM_zone_51N,	32451)
-ValuePair(PCS_WGS72BE_UTM_zone_52N,	32452)
-ValuePair(PCS_WGS72BE_UTM_zone_53N,	32453)
-ValuePair(PCS_WGS72BE_UTM_zone_54N,	32454)
-ValuePair(PCS_WGS72BE_UTM_zone_55N,	32455)
-ValuePair(PCS_WGS72BE_UTM_zone_56N,	32456)
-ValuePair(PCS_WGS72BE_UTM_zone_57N,	32457)
-ValuePair(PCS_WGS72BE_UTM_zone_58N,	32458)
-ValuePair(PCS_WGS72BE_UTM_zone_59N,	32459)
-ValuePair(PCS_WGS72BE_UTM_zone_60N,	32460)
-ValuePair(PCS_WGS72BE_UTM_zone_1S,	32501)
-ValuePair(PCS_WGS72BE_UTM_zone_2S,	32502)
-ValuePair(PCS_WGS72BE_UTM_zone_3S,	32503)
-ValuePair(PCS_WGS72BE_UTM_zone_4S,	32504)
-ValuePair(PCS_WGS72BE_UTM_zone_5S,	32505)
-ValuePair(PCS_WGS72BE_UTM_zone_6S,	32506)
-ValuePair(PCS_WGS72BE_UTM_zone_7S,	32507)
-ValuePair(PCS_WGS72BE_UTM_zone_8S,	32508)
-ValuePair(PCS_WGS72BE_UTM_zone_9S,	32509)
-ValuePair(PCS_WGS72BE_UTM_zone_10S,	32510)
-ValuePair(PCS_WGS72BE_UTM_zone_11S,	32511)
-ValuePair(PCS_WGS72BE_UTM_zone_12S,	32512)
-ValuePair(PCS_WGS72BE_UTM_zone_13S,	32513)
-ValuePair(PCS_WGS72BE_UTM_zone_14S,	32514)
-ValuePair(PCS_WGS72BE_UTM_zone_15S,	32515)
-ValuePair(PCS_WGS72BE_UTM_zone_16S,	32516)
-ValuePair(PCS_WGS72BE_UTM_zone_17S,	32517)
-ValuePair(PCS_WGS72BE_UTM_zone_18S,	32518)
-ValuePair(PCS_WGS72BE_UTM_zone_19S,	32519)
-ValuePair(PCS_WGS72BE_UTM_zone_20S,	32520)
-ValuePair(PCS_WGS72BE_UTM_zone_21S,	32521)
-ValuePair(PCS_WGS72BE_UTM_zone_22S,	32522)
-ValuePair(PCS_WGS72BE_UTM_zone_23S,	32523)
-ValuePair(PCS_WGS72BE_UTM_zone_24S,	32524)
-ValuePair(PCS_WGS72BE_UTM_zone_25S,	32525)
-ValuePair(PCS_WGS72BE_UTM_zone_26S,	32526)
-ValuePair(PCS_WGS72BE_UTM_zone_27S,	32527)
-ValuePair(PCS_WGS72BE_UTM_zone_28S,	32528)
-ValuePair(PCS_WGS72BE_UTM_zone_29S,	32529)
-ValuePair(PCS_WGS72BE_UTM_zone_30S,	32530)
-ValuePair(PCS_WGS72BE_UTM_zone_31S,	32531)
-ValuePair(PCS_WGS72BE_UTM_zone_32S,	32532)
-ValuePair(PCS_WGS72BE_UTM_zone_33S,	32533)
-ValuePair(PCS_WGS72BE_UTM_zone_34S,	32534)
-ValuePair(PCS_WGS72BE_UTM_zone_35S,	32535)
-ValuePair(PCS_WGS72BE_UTM_zone_36S,	32536)
-ValuePair(PCS_WGS72BE_UTM_zone_37S,	32537)
-ValuePair(PCS_WGS72BE_UTM_zone_38S,	32538)
-ValuePair(PCS_WGS72BE_UTM_zone_39S,	32539)
-ValuePair(PCS_WGS72BE_UTM_zone_40S,	32540)
-ValuePair(PCS_WGS72BE_UTM_zone_41S,	32541)
-ValuePair(PCS_WGS72BE_UTM_zone_42S,	32542)
-ValuePair(PCS_WGS72BE_UTM_zone_43S,	32543)
-ValuePair(PCS_WGS72BE_UTM_zone_44S,	32544)
-ValuePair(PCS_WGS72BE_UTM_zone_45S,	32545)
-ValuePair(PCS_WGS72BE_UTM_zone_46S,	32546)
-ValuePair(PCS_WGS72BE_UTM_zone_47S,	32547)
-ValuePair(PCS_WGS72BE_UTM_zone_48S,	32548)
-ValuePair(PCS_WGS72BE_UTM_zone_49S,	32549)
-ValuePair(PCS_WGS72BE_UTM_zone_50S,	32550)
-ValuePair(PCS_WGS72BE_UTM_zone_51S,	32551)
-ValuePair(PCS_WGS72BE_UTM_zone_52S,	32552)
-ValuePair(PCS_WGS72BE_UTM_zone_53S,	32553)
-ValuePair(PCS_WGS72BE_UTM_zone_54S,	32554)
-ValuePair(PCS_WGS72BE_UTM_zone_55S,	32555)
-ValuePair(PCS_WGS72BE_UTM_zone_56S,	32556)
-ValuePair(PCS_WGS72BE_UTM_zone_57S,	32557)
-ValuePair(PCS_WGS72BE_UTM_zone_58S,	32558)
-ValuePair(PCS_WGS72BE_UTM_zone_59S,	32559)
-ValuePair(PCS_WGS72BE_UTM_zone_60S,	32560)
-ValuePair(PCS_WGS84_UTM_zone_1N,	32601)
-ValuePair(PCS_WGS84_UTM_zone_2N,	32602)
-ValuePair(PCS_WGS84_UTM_zone_3N,	32603)
-ValuePair(PCS_WGS84_UTM_zone_4N,	32604)
-ValuePair(PCS_WGS84_UTM_zone_5N,	32605)
-ValuePair(PCS_WGS84_UTM_zone_6N,	32606)
-ValuePair(PCS_WGS84_UTM_zone_7N,	32607)
-ValuePair(PCS_WGS84_UTM_zone_8N,	32608)
-ValuePair(PCS_WGS84_UTM_zone_9N,	32609)
-ValuePair(PCS_WGS84_UTM_zone_10N,	32610)
-ValuePair(PCS_WGS84_UTM_zone_11N,	32611)
-ValuePair(PCS_WGS84_UTM_zone_12N,	32612)
-ValuePair(PCS_WGS84_UTM_zone_13N,	32613)
-ValuePair(PCS_WGS84_UTM_zone_14N,	32614)
-ValuePair(PCS_WGS84_UTM_zone_15N,	32615)
-ValuePair(PCS_WGS84_UTM_zone_16N,	32616)
-ValuePair(PCS_WGS84_UTM_zone_17N,	32617)
-ValuePair(PCS_WGS84_UTM_zone_18N,	32618)
-ValuePair(PCS_WGS84_UTM_zone_19N,	32619)
-ValuePair(PCS_WGS84_UTM_zone_20N,	32620)
-ValuePair(PCS_WGS84_UTM_zone_21N,	32621)
-ValuePair(PCS_WGS84_UTM_zone_22N,	32622)
-ValuePair(PCS_WGS84_UTM_zone_23N,	32623)
-ValuePair(PCS_WGS84_UTM_zone_24N,	32624)
-ValuePair(PCS_WGS84_UTM_zone_25N,	32625)
-ValuePair(PCS_WGS84_UTM_zone_26N,	32626)
-ValuePair(PCS_WGS84_UTM_zone_27N,	32627)
-ValuePair(PCS_WGS84_UTM_zone_28N,	32628)
-ValuePair(PCS_WGS84_UTM_zone_29N,	32629)
-ValuePair(PCS_WGS84_UTM_zone_30N,	32630)
-ValuePair(PCS_WGS84_UTM_zone_31N,	32631)
-ValuePair(PCS_WGS84_UTM_zone_32N,	32632)
-ValuePair(PCS_WGS84_UTM_zone_33N,	32633)
-ValuePair(PCS_WGS84_UTM_zone_34N,	32634)
-ValuePair(PCS_WGS84_UTM_zone_35N,	32635)
-ValuePair(PCS_WGS84_UTM_zone_36N,	32636)
-ValuePair(PCS_WGS84_UTM_zone_37N,	32637)
-ValuePair(PCS_WGS84_UTM_zone_38N,	32638)
-ValuePair(PCS_WGS84_UTM_zone_39N,	32639)
-ValuePair(PCS_WGS84_UTM_zone_40N,	32640)
-ValuePair(PCS_WGS84_UTM_zone_41N,	32641)
-ValuePair(PCS_WGS84_UTM_zone_42N,	32642)
-ValuePair(PCS_WGS84_UTM_zone_43N,	32643)
-ValuePair(PCS_WGS84_UTM_zone_44N,	32644)
-ValuePair(PCS_WGS84_UTM_zone_45N,	32645)
-ValuePair(PCS_WGS84_UTM_zone_46N,	32646)
-ValuePair(PCS_WGS84_UTM_zone_47N,	32647)
-ValuePair(PCS_WGS84_UTM_zone_48N,	32648)
-ValuePair(PCS_WGS84_UTM_zone_49N,	32649)
-ValuePair(PCS_WGS84_UTM_zone_50N,	32650)
-ValuePair(PCS_WGS84_UTM_zone_51N,	32651)
-ValuePair(PCS_WGS84_UTM_zone_52N,	32652)
-ValuePair(PCS_WGS84_UTM_zone_53N,	32653)
-ValuePair(PCS_WGS84_UTM_zone_54N,	32654)
-ValuePair(PCS_WGS84_UTM_zone_55N,	32655)
-ValuePair(PCS_WGS84_UTM_zone_56N,	32656)
-ValuePair(PCS_WGS84_UTM_zone_57N,	32657)
-ValuePair(PCS_WGS84_UTM_zone_58N,	32658)
-ValuePair(PCS_WGS84_UTM_zone_59N,	32659)
-ValuePair(PCS_WGS84_UTM_zone_60N,	32660)
-ValuePair(PCS_WGS84_UTM_zone_1S,	32701)
-ValuePair(PCS_WGS84_UTM_zone_2S,	32702)
-ValuePair(PCS_WGS84_UTM_zone_3S,	32703)
-ValuePair(PCS_WGS84_UTM_zone_4S,	32704)
-ValuePair(PCS_WGS84_UTM_zone_5S,	32705)
-ValuePair(PCS_WGS84_UTM_zone_6S,	32706)
-ValuePair(PCS_WGS84_UTM_zone_7S,	32707)
-ValuePair(PCS_WGS84_UTM_zone_8S,	32708)
-ValuePair(PCS_WGS84_UTM_zone_9S,	32709)
-ValuePair(PCS_WGS84_UTM_zone_10S,	32710)
-ValuePair(PCS_WGS84_UTM_zone_11S,	32711)
-ValuePair(PCS_WGS84_UTM_zone_12S,	32712)
-ValuePair(PCS_WGS84_UTM_zone_13S,	32713)
-ValuePair(PCS_WGS84_UTM_zone_14S,	32714)
-ValuePair(PCS_WGS84_UTM_zone_15S,	32715)
-ValuePair(PCS_WGS84_UTM_zone_16S,	32716)
-ValuePair(PCS_WGS84_UTM_zone_17S,	32717)
-ValuePair(PCS_WGS84_UTM_zone_18S,	32718)
-ValuePair(PCS_WGS84_UTM_zone_19S,	32719)
-ValuePair(PCS_WGS84_UTM_zone_20S,	32720)
-ValuePair(PCS_WGS84_UTM_zone_21S,	32721)
-ValuePair(PCS_WGS84_UTM_zone_22S,	32722)
-ValuePair(PCS_WGS84_UTM_zone_23S,	32723)
-ValuePair(PCS_WGS84_UTM_zone_24S,	32724)
-ValuePair(PCS_WGS84_UTM_zone_25S,	32725)
-ValuePair(PCS_WGS84_UTM_zone_26S,	32726)
-ValuePair(PCS_WGS84_UTM_zone_27S,	32727)
-ValuePair(PCS_WGS84_UTM_zone_28S,	32728)
-ValuePair(PCS_WGS84_UTM_zone_29S,	32729)
-ValuePair(PCS_WGS84_UTM_zone_30S,	32730)
-ValuePair(PCS_WGS84_UTM_zone_31S,	32731)
-ValuePair(PCS_WGS84_UTM_zone_32S,	32732)
-ValuePair(PCS_WGS84_UTM_zone_33S,	32733)
-ValuePair(PCS_WGS84_UTM_zone_34S,	32734)
-ValuePair(PCS_WGS84_UTM_zone_35S,	32735)
-ValuePair(PCS_WGS84_UTM_zone_36S,	32736)
-ValuePair(PCS_WGS84_UTM_zone_37S,	32737)
-ValuePair(PCS_WGS84_UTM_zone_38S,	32738)
-ValuePair(PCS_WGS84_UTM_zone_39S,	32739)
-ValuePair(PCS_WGS84_UTM_zone_40S,	32740)
-ValuePair(PCS_WGS84_UTM_zone_41S,	32741)
-ValuePair(PCS_WGS84_UTM_zone_42S,	32742)
-ValuePair(PCS_WGS84_UTM_zone_43S,	32743)
-ValuePair(PCS_WGS84_UTM_zone_44S,	32744)
-ValuePair(PCS_WGS84_UTM_zone_45S,	32745)
-ValuePair(PCS_WGS84_UTM_zone_46S,	32746)
-ValuePair(PCS_WGS84_UTM_zone_47S,	32747)
-ValuePair(PCS_WGS84_UTM_zone_48S,	32748)
-ValuePair(PCS_WGS84_UTM_zone_49S,	32749)
-ValuePair(PCS_WGS84_UTM_zone_50S,	32750)
-ValuePair(PCS_WGS84_UTM_zone_51S,	32751)
-ValuePair(PCS_WGS84_UTM_zone_52S,	32752)
-ValuePair(PCS_WGS84_UTM_zone_53S,	32753)
-ValuePair(PCS_WGS84_UTM_zone_54S,	32754)
-ValuePair(PCS_WGS84_UTM_zone_55S,	32755)
-ValuePair(PCS_WGS84_UTM_zone_56S,	32756)
-ValuePair(PCS_WGS84_UTM_zone_57S,	32757)
-ValuePair(PCS_WGS84_UTM_zone_58S,	32758)
-ValuePair(PCS_WGS84_UTM_zone_59S,	32759)
-ValuePair(PCS_WGS84_UTM_zone_60S,	32760)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_pm.inc b/Utilities/otbgeotiff/epsg_pm.inc
deleted file mode 100644
index 1e4159881962d0f4cf8dd128ba59aa5b0332ab5a..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_pm.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-/* EPSG/GeoTIFF Rev 0.2 Prime Meridian Database */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_pm.inc
-#endif /* OLD Codes */
-
-ValuePair(PM_Greenwich,	8901)
-ValuePair(PM_Lisbon,	8902)
-ValuePair(PM_Paris,	8903)
-ValuePair(PM_Bogota,	8904)
-ValuePair(PM_Madrid,	8905)
-ValuePair(PM_Rome,	8906)
-ValuePair(PM_Bern,	8907)
-ValuePair(PM_Jakarta,	8908)
-ValuePair(PM_Ferro,	8909)
-ValuePair(PM_Brussels,	8910)
-ValuePair(PM_Stockholm,	8911)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_proj.inc b/Utilities/otbgeotiff/epsg_proj.inc
deleted file mode 100644
index d6c8791556fa3d0e67a2f9ced579f977c34ccad5..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_proj.inc
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- *  EPSG/POSC Projection Codes - GeoTIFF Rev 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_proj.inc
-#endif /* OLD Codes */
-
-/* New codes */
-
-ValuePair(Proj_Stereo_70,19926)
-
-/* old codes */
-
-ValuePair(Proj_Alabama_CS27_East,	10101)
-ValuePair(Proj_Alabama_CS27_West,	10102)
-ValuePair(Proj_Alabama_CS83_East,	10131)
-ValuePair(Proj_Alabama_CS83_West,	10132)
-ValuePair(Proj_Arizona_Coordinate_System_east,	10201)
-ValuePair(Proj_Arizona_Coordinate_System_Central,	10202)
-ValuePair(Proj_Arizona_Coordinate_System_west,	10203)
-ValuePair(Proj_Arizona_CS83_east,	10231)
-ValuePair(Proj_Arizona_CS83_Central,	10232)
-ValuePair(Proj_Arizona_CS83_west,	10233)
-ValuePair(Proj_Arkansas_CS27_North,	10301)
-ValuePair(Proj_Arkansas_CS27_South,	10302)
-ValuePair(Proj_Arkansas_CS83_North,	10331)
-ValuePair(Proj_Arkansas_CS83_South,	10332)
-ValuePair(Proj_California_CS27_I,	10401)
-ValuePair(Proj_California_CS27_II,	10402)
-ValuePair(Proj_California_CS27_III,	10403)
-ValuePair(Proj_California_CS27_IV,	10404)
-ValuePair(Proj_California_CS27_V,	10405)
-ValuePair(Proj_California_CS27_VI,	10406)
-ValuePair(Proj_California_CS27_VII,	10407)
-ValuePair(Proj_California_CS83_1,	10431)
-ValuePair(Proj_California_CS83_2,	10432)
-ValuePair(Proj_California_CS83_3,	10433)
-ValuePair(Proj_California_CS83_4,	10434)
-ValuePair(Proj_California_CS83_5,	10435)
-ValuePair(Proj_California_CS83_6,	10436)
-ValuePair(Proj_Colorado_CS27_North,	10501)
-ValuePair(Proj_Colorado_CS27_Central,	10502)
-ValuePair(Proj_Colorado_CS27_South,	10503)
-ValuePair(Proj_Colorado_CS83_North,	10531)
-ValuePair(Proj_Colorado_CS83_Central,	10532)
-ValuePair(Proj_Colorado_CS83_South,	10533)
-ValuePair(Proj_Connecticut_CS27,	10600)
-ValuePair(Proj_Connecticut_CS83,	10630)
-ValuePair(Proj_Delaware_CS27,	10700)
-ValuePair(Proj_Delaware_CS83,	10730)
-ValuePair(Proj_Florida_CS27_East,	10901)
-ValuePair(Proj_Florida_CS27_West,	10902)
-ValuePair(Proj_Florida_CS27_North,	10903)
-ValuePair(Proj_Florida_CS83_East,	10931)
-ValuePair(Proj_Florida_CS83_West,	10932)
-ValuePair(Proj_Florida_CS83_North,	10933)
-ValuePair(Proj_Georgia_CS27_East,	11001)
-ValuePair(Proj_Georgia_CS27_West,	11002)
-ValuePair(Proj_Georgia_CS83_East,	11031)
-ValuePair(Proj_Georgia_CS83_West,	11032)
-ValuePair(Proj_Idaho_CS27_East,	11101)
-ValuePair(Proj_Idaho_CS27_Central,	11102)
-ValuePair(Proj_Idaho_CS27_West,	11103)
-ValuePair(Proj_Idaho_CS83_East,	11131)
-ValuePair(Proj_Idaho_CS83_Central,	11132)
-ValuePair(Proj_Idaho_CS83_West,	11133)
-ValuePair(Proj_Illinois_CS27_East,	11201)
-ValuePair(Proj_Illinois_CS27_West,	11202)
-ValuePair(Proj_Illinois_CS83_East,	11231)
-ValuePair(Proj_Illinois_CS83_West,	11232)
-ValuePair(Proj_Indiana_CS27_East,	11301)
-ValuePair(Proj_Indiana_CS27_West,	11302)
-ValuePair(Proj_Indiana_CS83_East,	11331)
-ValuePair(Proj_Indiana_CS83_West,	11332)
-ValuePair(Proj_Iowa_CS27_North,	11401)
-ValuePair(Proj_Iowa_CS27_South,	11402)
-ValuePair(Proj_Iowa_CS83_North,	11431)
-ValuePair(Proj_Iowa_CS83_South,	11432)
-ValuePair(Proj_Kansas_CS27_North,	11501)
-ValuePair(Proj_Kansas_CS27_South,	11502)
-ValuePair(Proj_Kansas_CS83_North,	11531)
-ValuePair(Proj_Kansas_CS83_South,	11532)
-ValuePair(Proj_Kentucky_CS27_North,	11601)
-ValuePair(Proj_Kentucky_CS27_South,	11602)
-ValuePair(Proj_Kentucky_CS83_North,	15303)
-ValuePair(Proj_Kentucky_CS83_South,	11632)
-ValuePair(Proj_Louisiana_CS27_North,	11701)
-ValuePair(Proj_Louisiana_CS27_South,	11702)
-ValuePair(Proj_Louisiana_CS83_North,	11731)
-ValuePair(Proj_Louisiana_CS83_South,	11732)
-ValuePair(Proj_Maine_CS27_East,	11801)
-ValuePair(Proj_Maine_CS27_West,	11802)
-ValuePair(Proj_Maine_CS83_East,	11831)
-ValuePair(Proj_Maine_CS83_West,	11832)
-ValuePair(Proj_Maryland_CS27,	11900)
-ValuePair(Proj_Maryland_CS83,	11930)
-ValuePair(Proj_Massachusetts_CS27_Mainland,	12001)
-ValuePair(Proj_Massachusetts_CS27_Island,	12002)
-ValuePair(Proj_Massachusetts_CS83_Mainland,	12031)
-ValuePair(Proj_Massachusetts_CS83_Island,	12032)
-ValuePair(Proj_Michigan_State_Plane_East,	12101)
-ValuePair(Proj_Michigan_State_Plane_Old_Central,	12102)
-ValuePair(Proj_Michigan_State_Plane_West,	12103)
-ValuePair(Proj_Michigan_CS27_North,	12111)
-ValuePair(Proj_Michigan_CS27_Central,	12112)
-ValuePair(Proj_Michigan_CS27_South,	12113)
-ValuePair(Proj_Michigan_CS83_North,	12141)
-ValuePair(Proj_Michigan_CS83_Central,	12142)
-ValuePair(Proj_Michigan_CS83_South,	12143)
-ValuePair(Proj_Minnesota_CS27_North,	12201)
-ValuePair(Proj_Minnesota_CS27_Central,	12202)
-ValuePair(Proj_Minnesota_CS27_South,	12203)
-ValuePair(Proj_Minnesota_CS83_North,	12231)
-ValuePair(Proj_Minnesota_CS83_Central,	12232)
-ValuePair(Proj_Minnesota_CS83_South,	12233)
-ValuePair(Proj_Mississippi_CS27_East,	12301)
-ValuePair(Proj_Mississippi_CS27_West,	12302)
-ValuePair(Proj_Mississippi_CS83_East,	12331)
-ValuePair(Proj_Mississippi_CS83_West,	12332)
-ValuePair(Proj_Missouri_CS27_East,	12401)
-ValuePair(Proj_Missouri_CS27_Central,	12402)
-ValuePair(Proj_Missouri_CS27_West,	12403)
-ValuePair(Proj_Missouri_CS83_East,	12431)
-ValuePair(Proj_Missouri_CS83_Central,	12432)
-ValuePair(Proj_Missouri_CS83_West,	12433)
-ValuePair(Proj_Montana_CS27_North,	12501)
-ValuePair(Proj_Montana_CS27_Central,	12502)
-ValuePair(Proj_Montana_CS27_South,	12503)
-ValuePair(Proj_Montana_CS83,	12530)
-ValuePair(Proj_Nebraska_CS27_North,	12601)
-ValuePair(Proj_Nebraska_CS27_South,	12602)
-ValuePair(Proj_Nebraska_CS83,	12630)
-ValuePair(Proj_Nevada_CS27_East,	12701)
-ValuePair(Proj_Nevada_CS27_Central,	12702)
-ValuePair(Proj_Nevada_CS27_West,	12703)
-ValuePair(Proj_Nevada_CS83_East,	12731)
-ValuePair(Proj_Nevada_CS83_Central,	12732)
-ValuePair(Proj_Nevada_CS83_West,	12733)
-ValuePair(Proj_New_Hampshire_CS27,	12800)
-ValuePair(Proj_New_Hampshire_CS83,	12830)
-ValuePair(Proj_New_Jersey_CS27,	12900)
-ValuePair(Proj_New_Jersey_CS83,	12930)
-ValuePair(Proj_New_Mexico_CS27_East,	13001)
-ValuePair(Proj_New_Mexico_CS27_Central,	13002)
-ValuePair(Proj_New_Mexico_CS27_West,	13003)
-ValuePair(Proj_New_Mexico_CS83_East,	13031)
-ValuePair(Proj_New_Mexico_CS83_Central,	13032)
-ValuePair(Proj_New_Mexico_CS83_West,	13033)
-ValuePair(Proj_New_York_CS27_East,	13101)
-ValuePair(Proj_New_York_CS27_Central,	13102)
-ValuePair(Proj_New_York_CS27_West,	13103)
-ValuePair(Proj_New_York_CS27_Long_Island,	13104)
-ValuePair(Proj_New_York_CS83_East,	13131)
-ValuePair(Proj_New_York_CS83_Central,	13132)
-ValuePair(Proj_New_York_CS83_West,	13133)
-ValuePair(Proj_New_York_CS83_Long_Island,	13134)
-ValuePair(Proj_North_Carolina_CS27,	13200)
-ValuePair(Proj_North_Carolina_CS83,	13230)
-ValuePair(Proj_North_Dakota_CS27_North,	13301)
-ValuePair(Proj_North_Dakota_CS27_South,	13302)
-ValuePair(Proj_North_Dakota_CS83_North,	13331)
-ValuePair(Proj_North_Dakota_CS83_South,	13332)
-ValuePair(Proj_Ohio_CS27_North,	13401)
-ValuePair(Proj_Ohio_CS27_South,	13402)
-ValuePair(Proj_Ohio_CS83_North,	13431)
-ValuePair(Proj_Ohio_CS83_South,	13432)
-ValuePair(Proj_Oklahoma_CS27_North,	13501)
-ValuePair(Proj_Oklahoma_CS27_South,	13502)
-ValuePair(Proj_Oklahoma_CS83_North,	13531)
-ValuePair(Proj_Oklahoma_CS83_South,	13532)
-ValuePair(Proj_Oregon_CS27_North,	13601)
-ValuePair(Proj_Oregon_CS27_South,	13602)
-ValuePair(Proj_Oregon_CS83_North,	13631)
-ValuePair(Proj_Oregon_CS83_South,	13632)
-ValuePair(Proj_Pennsylvania_CS27_North,	13701)
-ValuePair(Proj_Pennsylvania_CS27_South,	13702)
-ValuePair(Proj_Pennsylvania_CS83_North,	13731)
-ValuePair(Proj_Pennsylvania_CS83_South,	13732)
-ValuePair(Proj_Rhode_Island_CS27,	13800)
-ValuePair(Proj_Rhode_Island_CS83,	13830)
-ValuePair(Proj_South_Carolina_CS27_North,	13901)
-ValuePair(Proj_South_Carolina_CS27_South,	13902)
-ValuePair(Proj_South_Carolina_CS83,	13930)
-ValuePair(Proj_South_Dakota_CS27_North,	14001)
-ValuePair(Proj_South_Dakota_CS27_South,	14002)
-ValuePair(Proj_South_Dakota_CS83_North,	14031)
-ValuePair(Proj_South_Dakota_CS83_South,	14032)
-ValuePair(Proj_Tennessee_CS27,	15302)
-ValuePair(Proj_Tennessee_CS83,	14130)
-ValuePair(Proj_Texas_CS27_North,	14201)
-ValuePair(Proj_Texas_CS27_North_Central,	14202)
-ValuePair(Proj_Texas_CS27_Central,	14203)
-ValuePair(Proj_Texas_CS27_South_Central,	14204)
-ValuePair(Proj_Texas_CS27_South,	14205)
-ValuePair(Proj_Texas_CS83_North,	14231)
-ValuePair(Proj_Texas_CS83_North_Central,	14232)
-ValuePair(Proj_Texas_CS83_Central,	14233)
-ValuePair(Proj_Texas_CS83_South_Central,	14234)
-ValuePair(Proj_Texas_CS83_South,	14235)
-ValuePair(Proj_Utah_CS27_North,	14301)
-ValuePair(Proj_Utah_CS27_Central,	14302)
-ValuePair(Proj_Utah_CS27_South,	14303)
-ValuePair(Proj_Utah_CS83_North,	14331)
-ValuePair(Proj_Utah_CS83_Central,	14332)
-ValuePair(Proj_Utah_CS83_South,	14333)
-ValuePair(Proj_Vermont_CS27,	14400)
-ValuePair(Proj_Vermont_CS83,	14430)
-ValuePair(Proj_Virginia_CS27_North,	14501)
-ValuePair(Proj_Virginia_CS27_South,	14502)
-ValuePair(Proj_Virginia_CS83_North,	14531)
-ValuePair(Proj_Virginia_CS83_South,	14532)
-ValuePair(Proj_Washington_CS27_North,	14601)
-ValuePair(Proj_Washington_CS27_South,	14602)
-ValuePair(Proj_Washington_CS83_North,	14631)
-ValuePair(Proj_Washington_CS83_South,	14632)
-ValuePair(Proj_West_Virginia_CS27_North,	14701)
-ValuePair(Proj_West_Virginia_CS27_South,	14702)
-ValuePair(Proj_West_Virginia_CS83_North,	14731)
-ValuePair(Proj_West_Virginia_CS83_South,	14732)
-ValuePair(Proj_Wisconsin_CS27_North,	14801)
-ValuePair(Proj_Wisconsin_CS27_Central,	14802)
-ValuePair(Proj_Wisconsin_CS27_South,	14803)
-ValuePair(Proj_Wisconsin_CS83_North,	14831)
-ValuePair(Proj_Wisconsin_CS83_Central,	14832)
-ValuePair(Proj_Wisconsin_CS83_South,	14833)
-ValuePair(Proj_Wyoming_CS27_East,	14901)
-ValuePair(Proj_Wyoming_CS27_East_Central,	14902)
-ValuePair(Proj_Wyoming_CS27_West_Central,	14903)
-ValuePair(Proj_Wyoming_CS27_West,	14904)
-ValuePair(Proj_Wyoming_CS83_East,	14931)
-ValuePair(Proj_Wyoming_CS83_East_Central,	14932)
-ValuePair(Proj_Wyoming_CS83_West_Central,	14933)
-ValuePair(Proj_Wyoming_CS83_West,	14934)
-ValuePair(Proj_Alaska_CS27_1,	15001)
-ValuePair(Proj_Alaska_CS27_2,	15002)
-ValuePair(Proj_Alaska_CS27_3,	15003)
-ValuePair(Proj_Alaska_CS27_4,	15004)
-ValuePair(Proj_Alaska_CS27_5,	15005)
-ValuePair(Proj_Alaska_CS27_6,	15006)
-ValuePair(Proj_Alaska_CS27_7,	15007)
-ValuePair(Proj_Alaska_CS27_8,	15008)
-ValuePair(Proj_Alaska_CS27_9,	15009)
-ValuePair(Proj_Alaska_CS27_10,	15010)
-ValuePair(Proj_Alaska_CS83_1,	15031)
-ValuePair(Proj_Alaska_CS83_2,	15032)
-ValuePair(Proj_Alaska_CS83_3,	15033)
-ValuePair(Proj_Alaska_CS83_4,	15034)
-ValuePair(Proj_Alaska_CS83_5,	15035)
-ValuePair(Proj_Alaska_CS83_6,	15036)
-ValuePair(Proj_Alaska_CS83_7,	15037)
-ValuePair(Proj_Alaska_CS83_8,	15038)
-ValuePair(Proj_Alaska_CS83_9,	15039)
-ValuePair(Proj_Alaska_CS83_10,	15040)
-ValuePair(Proj_Hawaii_CS27_1,	15101)
-ValuePair(Proj_Hawaii_CS27_2,	15102)
-ValuePair(Proj_Hawaii_CS27_3,	15103)
-ValuePair(Proj_Hawaii_CS27_4,	15104)
-ValuePair(Proj_Hawaii_CS27_5,	15105)
-ValuePair(Proj_Hawaii_CS83_1,	15131)
-ValuePair(Proj_Hawaii_CS83_2,	15132)
-ValuePair(Proj_Hawaii_CS83_3,	15133)
-ValuePair(Proj_Hawaii_CS83_4,	15134)
-ValuePair(Proj_Hawaii_CS83_5,	15135)
-ValuePair(Proj_Puerto_Rico_CS27,	15201)
-ValuePair(Proj_St_Croix,	15202)
-ValuePair(Proj_Puerto_Rico_Virgin_Is,	15230)
-ValuePair(Proj_BLM_14N_feet,	15914)
-ValuePair(Proj_BLM_15N_feet,	15915)
-ValuePair(Proj_BLM_16N_feet,	15916)
-ValuePair(Proj_BLM_17N_feet,	15917)
-ValuePair(Proj_UTM_zone_1N,  16001)
-ValuePair(Proj_UTM_zone_2N,  16002)
-ValuePair(Proj_UTM_zone_3N,  16003)
-ValuePair(Proj_UTM_zone_4N,  16004)
-ValuePair(Proj_UTM_zone_5N,  16005)
-ValuePair(Proj_UTM_zone_6N,  16006)
-ValuePair(Proj_UTM_zone_7N,  16007)
-ValuePair(Proj_UTM_zone_8N,  16008)
-ValuePair(Proj_UTM_zone_9N,  16009)
-ValuePair(Proj_UTM_zone_10N, 16010)
-ValuePair(Proj_UTM_zone_11N, 16011)
-ValuePair(Proj_UTM_zone_12N, 16012)
-ValuePair(Proj_UTM_zone_13N, 16013)
-ValuePair(Proj_UTM_zone_14N, 16014)
-ValuePair(Proj_UTM_zone_15N, 16015)
-ValuePair(Proj_UTM_zone_16N, 16016)
-ValuePair(Proj_UTM_zone_17N, 16017)
-ValuePair(Proj_UTM_zone_18N, 16018)
-ValuePair(Proj_UTM_zone_19N, 16019)
-ValuePair(Proj_UTM_zone_20N, 16020)
-ValuePair(Proj_UTM_zone_21N, 16021)
-ValuePair(Proj_UTM_zone_22N, 16022)
-ValuePair(Proj_UTM_zone_23N, 16023)
-ValuePair(Proj_UTM_zone_24N, 16024)
-ValuePair(Proj_UTM_zone_25N, 16025)
-ValuePair(Proj_UTM_zone_26N, 16026)
-ValuePair(Proj_UTM_zone_27N, 16027)
-ValuePair(Proj_UTM_zone_28N, 16028)
-ValuePair(Proj_UTM_zone_29N, 16029)
-ValuePair(Proj_UTM_zone_30N, 16030)
-ValuePair(Proj_UTM_zone_31N, 16031)
-ValuePair(Proj_UTM_zone_32N, 16032)
-ValuePair(Proj_UTM_zone_33N, 16033)
-ValuePair(Proj_UTM_zone_34N, 16034)
-ValuePair(Proj_UTM_zone_35N, 16035)
-ValuePair(Proj_UTM_zone_36N, 16036)
-ValuePair(Proj_UTM_zone_37N, 16037)
-ValuePair(Proj_UTM_zone_38N, 16038)
-ValuePair(Proj_UTM_zone_39N, 16039)
-ValuePair(Proj_UTM_zone_40N, 16040)
-ValuePair(Proj_UTM_zone_41N, 16041)
-ValuePair(Proj_UTM_zone_42N, 16042)
-ValuePair(Proj_UTM_zone_43N, 16043)
-ValuePair(Proj_UTM_zone_44N, 16044)
-ValuePair(Proj_UTM_zone_45N, 16045)
-ValuePair(Proj_UTM_zone_46N, 16046)
-ValuePair(Proj_UTM_zone_47N, 16047)
-ValuePair(Proj_UTM_zone_48N, 16048)
-ValuePair(Proj_UTM_zone_49N, 16049)
-ValuePair(Proj_UTM_zone_50N, 16050)
-ValuePair(Proj_UTM_zone_51N, 16051)
-ValuePair(Proj_UTM_zone_52N, 16052)
-ValuePair(Proj_UTM_zone_53N, 16053)
-ValuePair(Proj_UTM_zone_54N, 16054)
-ValuePair(Proj_UTM_zone_55N, 16055)
-ValuePair(Proj_UTM_zone_56N, 16056)
-ValuePair(Proj_UTM_zone_57N, 16057)
-ValuePair(Proj_UTM_zone_58N, 16058)
-ValuePair(Proj_UTM_zone_59N, 16059)
-ValuePair(Proj_UTM_zone_60N, 16060)
-ValuePair(Proj_UTM_zone_1S,  16101)
-ValuePair(Proj_UTM_zone_2S,  16102)
-ValuePair(Proj_UTM_zone_3S,  16103)
-ValuePair(Proj_UTM_zone_4S,  16104)
-ValuePair(Proj_UTM_zone_5S,  16105)
-ValuePair(Proj_UTM_zone_6S,  16106)
-ValuePair(Proj_UTM_zone_7S,  16107)
-ValuePair(Proj_UTM_zone_8S,  16108)
-ValuePair(Proj_UTM_zone_9S,  16109)
-ValuePair(Proj_UTM_zone_10S, 16110)
-ValuePair(Proj_UTM_zone_11S, 16111)
-ValuePair(Proj_UTM_zone_12S, 16112)
-ValuePair(Proj_UTM_zone_13S, 16113)
-ValuePair(Proj_UTM_zone_14S, 16114)
-ValuePair(Proj_UTM_zone_15S, 16115)
-ValuePair(Proj_UTM_zone_16S, 16116)
-ValuePair(Proj_UTM_zone_17S, 16117)
-ValuePair(Proj_UTM_zone_18S, 16118)
-ValuePair(Proj_UTM_zone_19S, 16119)
-ValuePair(Proj_UTM_zone_20S, 16120)
-ValuePair(Proj_UTM_zone_21S, 16121)
-ValuePair(Proj_UTM_zone_22S, 16122)
-ValuePair(Proj_UTM_zone_23S, 16123)
-ValuePair(Proj_UTM_zone_24S, 16124)
-ValuePair(Proj_UTM_zone_25S, 16125)
-ValuePair(Proj_UTM_zone_26S, 16126)
-ValuePair(Proj_UTM_zone_27S, 16127)
-ValuePair(Proj_UTM_zone_28S, 16128)
-ValuePair(Proj_UTM_zone_29S, 16129)
-ValuePair(Proj_UTM_zone_30S, 16130)
-ValuePair(Proj_UTM_zone_31S, 16131)
-ValuePair(Proj_UTM_zone_32S, 16132)
-ValuePair(Proj_UTM_zone_33S, 16133)
-ValuePair(Proj_UTM_zone_34S, 16134)
-ValuePair(Proj_UTM_zone_35S, 16135)
-ValuePair(Proj_UTM_zone_36S, 16136)
-ValuePair(Proj_UTM_zone_37S, 16137)
-ValuePair(Proj_UTM_zone_38S, 16138)
-ValuePair(Proj_UTM_zone_39S, 16139)
-ValuePair(Proj_UTM_zone_40S, 16140)
-ValuePair(Proj_UTM_zone_41S, 16141)
-ValuePair(Proj_UTM_zone_42S, 16142)
-ValuePair(Proj_UTM_zone_43S, 16143)
-ValuePair(Proj_UTM_zone_44S, 16144)
-ValuePair(Proj_UTM_zone_45S, 16145)
-ValuePair(Proj_UTM_zone_46S, 16146)
-ValuePair(Proj_UTM_zone_47S, 16147)
-ValuePair(Proj_UTM_zone_48S, 16148)
-ValuePair(Proj_UTM_zone_49S, 16149)
-ValuePair(Proj_UTM_zone_50S, 16150)
-ValuePair(Proj_UTM_zone_51S, 16151)
-ValuePair(Proj_UTM_zone_52S, 16152)
-ValuePair(Proj_UTM_zone_53S, 16153)
-ValuePair(Proj_UTM_zone_54S, 16154)
-ValuePair(Proj_UTM_zone_55S, 16155)
-ValuePair(Proj_UTM_zone_56S, 16156)
-ValuePair(Proj_UTM_zone_57S, 16157)
-ValuePair(Proj_UTM_zone_58S, 16158)
-ValuePair(Proj_UTM_zone_59S, 16159)
-ValuePair(Proj_UTM_zone_60S, 16160)
-ValuePair(Proj_Gauss_Kruger_zone_0, 16200)
-ValuePair(Proj_Gauss_Kruger_zone_1, 16201)
-ValuePair(Proj_Gauss_Kruger_zone_2, 16202)
-ValuePair(Proj_Gauss_Kruger_zone_3, 16203)
-ValuePair(Proj_Gauss_Kruger_zone_4, 16204)
-ValuePair(Proj_Gauss_Kruger_zone_5, 16205)
-ValuePair(Proj_Map_Grid_of_Australia_48,	17348)
-ValuePair(Proj_Map_Grid_of_Australia_49,	17349)
-ValuePair(Proj_Map_Grid_of_Australia_50,	17350)
-ValuePair(Proj_Map_Grid_of_Australia_51,	17351)
-ValuePair(Proj_Map_Grid_of_Australia_52,	17352)
-ValuePair(Proj_Map_Grid_of_Australia_53,	17353)
-ValuePair(Proj_Map_Grid_of_Australia_54,	17354)
-ValuePair(Proj_Map_Grid_of_Australia_55,	17355)
-ValuePair(Proj_Map_Grid_of_Australia_56,	17356)
-ValuePair(Proj_Map_Grid_of_Australia_57,	17357)
-ValuePair(Proj_Map_Grid_of_Australia_58,	17358)
-ValuePair(Proj_Australian_Map_Grid_48,	17448)
-ValuePair(Proj_Australian_Map_Grid_49,	17449)
-ValuePair(Proj_Australian_Map_Grid_50,	17450)
-ValuePair(Proj_Australian_Map_Grid_51,	17451)
-ValuePair(Proj_Australian_Map_Grid_52,	17452)
-ValuePair(Proj_Australian_Map_Grid_53,	17453)
-ValuePair(Proj_Australian_Map_Grid_54,	17454)
-ValuePair(Proj_Australian_Map_Grid_55,	17455)
-ValuePair(Proj_Australian_Map_Grid_56,	17456)
-ValuePair(Proj_Australian_Map_Grid_57,	17457)
-ValuePair(Proj_Australian_Map_Grid_58,	17458)
-ValuePair(Proj_Argentina_1,	18031)
-ValuePair(Proj_Argentina_2,	18032)
-ValuePair(Proj_Argentina_3,	18033)
-ValuePair(Proj_Argentina_4,	18034)
-ValuePair(Proj_Argentina_5,	18035)
-ValuePair(Proj_Argentina_6,	18036)
-ValuePair(Proj_Argentina_7,	18037)
-ValuePair(Proj_Colombia_3W,	18051)
-ValuePair(Proj_Colombia_Bogota,	18052)
-ValuePair(Proj_Colombia_3E,	18053)
-ValuePair(Proj_Colombia_6E,	18054)
-ValuePair(Proj_Egypt_Red_Belt,	18072)
-ValuePair(Proj_Egypt_Purple_Belt,	18073)
-ValuePair(Proj_Extended_Purple_Belt,	18074)
-ValuePair(Proj_New_Zealand_North_Island_Nat_Grid,	18141)
-ValuePair(Proj_New_Zealand_South_Island_Nat_Grid,	18142)
-ValuePair(Proj_Bahrain_Grid,	19900)
-ValuePair(Proj_Netherlands_E_Indies_Equatorial,	19905)
-ValuePair(Proj_RSO_Borneo,	19912)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_units.inc b/Utilities/otbgeotiff/epsg_units.inc
deleted file mode 100644
index fe1b5db7bfde9b69555e50019b49926b5f42e305..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_units.inc
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Rev. 0.2 EPSG/POSC Units Database.
- */
- 
-#ifdef INCLUDE_OLD_CODES
-#include geo_units.inc
-#endif /* OLD Codes */
-
-ValuePair(Linear_Meter,	9001)
-ValuePair(Linear_Foot,	9002)
-ValuePair(Linear_Foot_US_Survey,	9003)
-ValuePair(Linear_Foot_Modified_American,	9004)
-ValuePair(Linear_Foot_Clarke,	9005)
-ValuePair(Linear_Foot_Indian,	9006)
-ValuePair(Linear_Link,	9007)
-ValuePair(Linear_Link_Benoit,	9008)
-ValuePair(Linear_Link_Sears,	9009)
-ValuePair(Linear_Chain_Benoit,	9010)
-ValuePair(Linear_Chain_Sears,	9011)
-ValuePair(Linear_Yard_Sears,	9012)
-ValuePair(Linear_Yard_Indian,	9013)
-ValuePair(Linear_Fathom,	9014)
-ValuePair(Linear_Mile_International_Nautical,	9015)
-/*
- *  Angular Units
- */
-ValuePair(Angular_Radian,	9101)
-ValuePair(Angular_Degree,	9102)
-ValuePair(Angular_Arc_Minute,	9103)
-ValuePair(Angular_Arc_Second,	9104)
-ValuePair(Angular_Grad,	9105)
-ValuePair(Angular_Gon,	9106)
-ValuePair(Angular_DMS,	9107)
-ValuePair(Angular_DMS_Hemisphere,	9108)
-/* end of list */
diff --git a/Utilities/otbgeotiff/epsg_vertcs.inc b/Utilities/otbgeotiff/epsg_vertcs.inc
deleted file mode 100644
index d6b6791cb301dc6d7833a988e7c05a1448677ba2..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/epsg_vertcs.inc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  EPSG/POSC Ellipsoid-referenced Vertical CS
- *   Note: these should correspond exactly with the Ellipsoid database.
- */
-ValuePair(VertCS_Airy_1830_ellipsoid,	5001)
-ValuePair(VertCS_Airy_Modified_1849_ellipsoid,	5002)
-ValuePair(VertCS_ANS_ellipsoid,	5003)
-ValuePair(VertCS_Bessel_1841_ellipsoid,	5004)
-ValuePair(VertCS_Bessel_Modified_ellipsoid,	5005)
-ValuePair(VertCS_Bessel_Namibia_ellipsoid,	5006)
-ValuePair(VertCS_Clarke_1858_ellipsoid,	5007)
-ValuePair(VertCS_Clarke_1866_ellipsoid,	5008)
-ValuePair(VertCS_Clarke_1880_Benoit_ellipsoid,	5010)
-ValuePair(VertCS_Clarke_1880_IGN_ellipsoid,	5011)
-ValuePair(VertCS_Clarke_1880_RGS_ellipsoid,	5012)
-ValuePair(VertCS_Clarke_1880_Arc_ellipsoid,	5013)
-ValuePair(VertCS_Clarke_1880_SGA_1922_ellipsoid,	5014)
-ValuePair(VertCS_Everest_1830_1937_Adjustment_ellipsoid,	5015)
-ValuePair(VertCS_Everest_1830_1967_Definition_ellipsoid,	5016)
-ValuePair(VertCS_Everest_1830_1975_Definition_ellipsoid,	5017)
-ValuePair(VertCS_Everest_1830_Modified_ellipsoid,	5018)
-ValuePair(VertCS_GRS_1980_ellipsoid,	5019)
-ValuePair(VertCS_Helmert_1906_ellipsoid,	5020)
-ValuePair(VertCS_INS_ellipsoid,	5021)
-ValuePair(VertCS_International_1924_ellipsoid,	5022)
-ValuePair(VertCS_International_1967_ellipsoid,	5023)
-ValuePair(VertCS_Krassowsky_1940_ellipsoid,	5024)
-ValuePair(VertCS_NWL_9D_ellipsoid,	5025)
-ValuePair(VertCS_NWL_10D_ellipsoid,	5026)
-ValuePair(VertCS_Plessis_1817_ellipsoid,	5027)
-ValuePair(VertCS_Struve_1860_ellipsoid,	5028)
-ValuePair(VertCS_War_Office_ellipsoid,	5029)
-ValuePair(VertCS_WGS_84_ellipsoid,	5030)
-ValuePair(VertCS_GEM_10C_ellipsoid,	5031)
-ValuePair(VertCS_OSU86F_ellipsoid,	5032)
-ValuePair(VertCS_OSU91A_ellipsoid,	5033)
-/*
- *  Other established Vertical CS
- */
-ValuePair(VertCS_Newlyn,	5101)
-ValuePair(VertCS_North_American_Vertical_Datum_1929,	5102)
-ValuePair(VertCS_North_American_Vertical_Datum_1988,	5103)
-ValuePair(VertCS_Yellow_Sea_1956,	5104)
-ValuePair(VertCS_Baltic_Sea,	5105)
-ValuePair(VertCS_Caspian_Sea,	5106)
-/* end of list */
diff --git a/Utilities/otbgeotiff/geo_config.h.in b/Utilities/otbgeotiff/geo_config.h.in
deleted file mode 100644
index 85660c5cda477cd6492077fa2473b48ab4992786..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_config.h.in
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef GEO_CONFIG_H
-#define GEO_CONFIG_H
-
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
-
-/* Define if you have the <stdlib.h> header file.  */
-#undef HAVE_STDLIB_H
-
-/* Define if you have the <string.h> header file.  */
-#undef HAVE_STRING_H
-
-/* Define if you have the <strings.h> header file.  */
-#undef HAVE_STRINGS_H
-
-#undef HAVE_LIBPROJ
-#undef HAVE_PROJECTS_H
-
-#endif /* ndef GEO_CONFIG_H */
diff --git a/Utilities/otbgeotiff/geo_ctrans.inc b/Utilities/otbgeotiff/geo_ctrans.inc
deleted file mode 100644
index 5ebc643dc9b421c2e4a6746046d6b834d7c4d7f4..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_ctrans.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
- * $Id: geo_ctrans.inc,v 1.3 2005/03/04 03:59:11 fwarmerdam Exp $
- *
- * Project:  libgeotiff
- * Purpose:  GeoTIFF Projection Method codes. 
- * Author:   Frank Warmerdam, warmerdam@pobox.com
- *
- ******************************************************************************
- * Copyright (c) 2005, Frank Warmerdam <warmerdam@pobox.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log: geo_ctrans.inc,v $
- * Revision 1.3  2005/03/04 03:59:11  fwarmerdam
- * Added header.
- *
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-/*
- *  Revised 12 Jul 1995   NDR -- changed South Oriented to a code 
- *  Revised 28 Sep 1995   NDR -- Added Rev. 1.0 aliases. 
- */
-
-ValuePair(CT_TransverseMercator,	1)
-ValuePair(CT_TransvMercator_Modified_Alaska, 2)
-ValuePair(CT_ObliqueMercator,	3)
-ValuePair(CT_ObliqueMercator_Laborde,	4)
-ValuePair(CT_ObliqueMercator_Rosenmund,	5)
-ValuePair(CT_ObliqueMercator_Spherical,	6)   /* not advisable */
-ValuePair(CT_Mercator,	7)
-ValuePair(CT_LambertConfConic_2SP,	8)
-ValuePair(CT_LambertConfConic,CT_LambertConfConic_2SP)         /* Alias */
-ValuePair(CT_LambertConfConic_1SP,	9)
-ValuePair(CT_LambertConfConic_Helmert,CT_LambertConfConic_1SP) /* alias */
-ValuePair(CT_LambertAzimEqualArea,	10)
-ValuePair(CT_AlbersEqualArea,	11)
-ValuePair(CT_AzimuthalEquidistant,	12)
-ValuePair(CT_EquidistantConic,	13)
-ValuePair(CT_Stereographic,	14)
-ValuePair(CT_PolarStereographic,	15)
-ValuePair(CT_ObliqueStereographic,	16)   /* not advisable */
-ValuePair(CT_Equirectangular,	17)
-ValuePair(CT_CassiniSoldner,	18)
-ValuePair(CT_Gnomonic,	19)
-ValuePair(CT_MillerCylindrical,	20)
-ValuePair(CT_Orthographic,	21)
-ValuePair(CT_Polyconic,	22)
-ValuePair(CT_Robinson,	23)
-ValuePair(CT_Sinusoidal,	24)
-ValuePair(CT_VanDerGrinten,	25)
-ValuePair(CT_NewZealandMapGrid,	26)
-/* Added for 1.0 */
-ValuePair(CT_TransvMercator_SouthOrientated, 27)
-
-/* Added Feb 2005 */
-ValuePair(CT_CylindricalEqualArea, 28)
-
-
-/* Aliases */
-
-ValuePair(CT_SouthOrientedGaussConformal,CT_TransvMercator_SouthOrientated)
-ValuePair(CT_AlaskaConformal,	CT_TransvMercator_Modified_Alaska)
-ValuePair(CT_TransvEquidistCylindrical,	CT_CassiniSoldner)
-ValuePair(CT_ObliqueMercator_Hotine,	CT_ObliqueMercator)
-ValuePair(CT_SwissObliqueCylindrical,	CT_ObliqueMercator_Rosenmund)
-ValuePair(CT_GaussBoaga,	CT_TransverseMercator)
-ValuePair(CT_GaussKruger,	CT_TransverseMercator)
-ValuePair(CT_TransvMercator_SouthOriented, CT_TransvMercator_SouthOrientated)
-
-
diff --git a/Utilities/otbgeotiff/geo_extra.c b/Utilities/otbgeotiff/geo_extra.c
deleted file mode 100644
index a1fdecf22a8977514ae4bfa3a6d873ca29e259bb..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_extra.c
+++ /dev/null
@@ -1,747 +0,0 @@
-/******************************************************************************
- * $Id: geo_extra.c,v 1.4 2002/12/01 23:44:34 warmerda Exp $
- *
- * Project:  libgeotiff
- * Purpose:  Code to normalize a few common PCS values without use of CSV
- *           files.
- * 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.
- ******************************************************************************
- *
- * $Log: geo_extra.c,v $
- * Revision 1.4  2002/12/01 23:44:34  warmerda
- * Fixed typo in last fix.
- *
- * Revision 1.3  2002/12/01 23:42:06  warmerda
- * added overrides for two deprecated stateplane zones
- *
- * Revision 1.2  1999/05/04 03:09:33  warmerda
- * avoid warnings
- *
- * Revision 1.1  1999/04/28 20:01:29  warmerda
- * new
- *
- */
-
-/*
-#include "geotiff.h"
-#include "geo_tiffp.h"
-#include "geo_keyp.h"
-*/
-
-#include "geo_normalize.h"
-#include "geovalues.h"
-
-static int StatePlaneTable[] = 
-{
-    PCS_NAD83_Alabama_East,		Proj_Alabama_CS83_East,
-    PCS_NAD83_Alabama_West,		Proj_Alabama_CS83_West,
-
-    PCS_NAD83_Alaska_zone_1,		Proj_Alaska_CS83_1,
-    PCS_NAD83_Alaska_zone_2,		Proj_Alaska_CS83_2,
-    PCS_NAD83_Alaska_zone_3,		Proj_Alaska_CS83_3,
-    PCS_NAD83_Alaska_zone_4,		Proj_Alaska_CS83_4,
-    PCS_NAD83_Alaska_zone_5,		Proj_Alaska_CS83_5,
-    PCS_NAD83_Alaska_zone_6,		Proj_Alaska_CS83_6,
-    PCS_NAD83_Alaska_zone_7,		Proj_Alaska_CS83_7,
-    PCS_NAD83_Alaska_zone_8,		Proj_Alaska_CS83_8,
-    PCS_NAD83_Alaska_zone_9,		Proj_Alaska_CS83_9,
-    PCS_NAD83_Alaska_zone_10,		Proj_Alaska_CS83_10,
-
-    PCS_NAD83_California_1,		Proj_California_CS83_1,
-    PCS_NAD83_California_2,		Proj_California_CS83_2,
-    PCS_NAD83_California_3,		Proj_California_CS83_3,
-    PCS_NAD83_California_4,		Proj_California_CS83_4,
-    PCS_NAD83_California_5,		Proj_California_CS83_5,
-    PCS_NAD83_California_6,		Proj_California_CS83_6,
-
-    PCS_NAD83_Arizona_East,		Proj_Arizona_CS83_east,
-    PCS_NAD83_Arizona_Central,		Proj_Arizona_CS83_Central,
-    PCS_NAD83_Arizona_West,		Proj_Arizona_CS83_west,
-
-    PCS_NAD83_Arkansas_North,		Proj_Arkansas_CS83_North,
-    PCS_NAD83_Arkansas_South,		Proj_Arkansas_CS83_South,
-
-    PCS_NAD83_Colorado_North,		Proj_Colorado_CS83_North,
-    PCS_NAD83_Colorado_Central,		Proj_Colorado_CS83_Central,
-    PCS_NAD83_Colorado_South,		Proj_Colorado_CS83_South,
-
-    PCS_NAD83_Connecticut,		Proj_Connecticut_CS83,
-
-    PCS_NAD83_Delaware,			Proj_Delaware_CS83,
-
-    PCS_NAD83_Florida_East,		Proj_Florida_CS83_East,
-    PCS_NAD83_Florida_North,		Proj_Florida_CS83_North,
-    PCS_NAD83_Florida_West,		Proj_Florida_CS83_West,
-
-    PCS_NAD83_Hawaii_zone_1,		Proj_Hawaii_CS83_1,
-    PCS_NAD83_Hawaii_zone_2,		Proj_Hawaii_CS83_2,
-    PCS_NAD83_Hawaii_zone_3,		Proj_Hawaii_CS83_3,
-    PCS_NAD83_Hawaii_zone_4,		Proj_Hawaii_CS83_4,
-    PCS_NAD83_Hawaii_zone_5,		Proj_Hawaii_CS83_5,
-
-    PCS_NAD83_Georgia_East,		Proj_Georgia_CS83_East,
-    PCS_NAD83_Georgia_West,		Proj_Georgia_CS83_West,
-
-    PCS_NAD83_Idaho_East,		Proj_Idaho_CS83_East,
-    PCS_NAD83_Idaho_Central,		Proj_Idaho_CS83_Central,
-    PCS_NAD83_Idaho_West,		Proj_Idaho_CS83_West,
-
-    PCS_NAD83_Illinois_East,		Proj_Illinois_CS83_East,
-    PCS_NAD83_Illinois_West,		Proj_Illinois_CS83_West,
-
-    PCS_NAD83_Indiana_East,		Proj_Indiana_CS83_East,
-    PCS_NAD83_Indiana_West,		Proj_Indiana_CS83_West,
-
-    PCS_NAD83_Iowa_North,      		Proj_Iowa_CS83_North,
-    PCS_NAD83_Iowa_South,      		Proj_Iowa_CS83_South,
-
-    PCS_NAD83_Kansas_North,		Proj_Kansas_CS83_North,
-    PCS_NAD83_Kansas_South,		Proj_Kansas_CS83_South,
-
-    PCS_NAD83_Kentucky_North,		Proj_Kentucky_CS83_North,
-    PCS_NAD83_Kentucky_South,		Proj_Kentucky_CS83_South,
-
-    PCS_NAD83_Louisiana_North,		Proj_Louisiana_CS83_North,
-    PCS_NAD83_Louisiana_South,		Proj_Louisiana_CS83_South,
-
-    PCS_NAD83_Maine_East,		Proj_Maine_CS83_East,
-    PCS_NAD83_Maine_West,		Proj_Maine_CS83_West,
-
-    PCS_NAD83_Maryland,			Proj_Maryland_CS83,
-
-    PCS_NAD83_Massachusetts,		Proj_Massachusetts_CS83_Mainland,
-    PCS_NAD83_Massachusetts_Is,		Proj_Massachusetts_CS83_Island,
-
-    PCS_NAD83_Michigan_North,		Proj_Michigan_CS83_North,
-    PCS_NAD83_Michigan_Central,		Proj_Michigan_CS83_Central,
-    PCS_NAD83_Michigan_South,		Proj_Michigan_CS83_South,
-
-    PCS_NAD83_Minnesota_North,		Proj_Minnesota_CS83_North,
-    PCS_NAD83_Minnesota_Cent,		Proj_Minnesota_CS83_Central,
-    PCS_NAD83_Minnesota_South,		Proj_Minnesota_CS83_South,
-
-    PCS_NAD83_Mississippi_East,		Proj_Mississippi_CS83_East,
-    PCS_NAD83_Mississippi_West,		Proj_Mississippi_CS83_West,
-
-    PCS_NAD83_Missouri_East,		Proj_Missouri_CS83_East,
-    PCS_NAD83_Missouri_Central,		Proj_Missouri_CS83_Central,
-    PCS_NAD83_Missouri_West,		Proj_Missouri_CS83_West,
-
-    PCS_NAD83_Montana,			Proj_Montana_CS83,
-
-    PCS_NAD83_Nebraska,			Proj_Nebraska_CS83,
-
-    PCS_NAD83_Nevada_East,		Proj_Nevada_CS83_East,
-    PCS_NAD83_Nevada_Central,		Proj_Nevada_CS83_Central,
-    PCS_NAD83_Nevada_West,		Proj_Nevada_CS83_West,
-
-    PCS_NAD83_New_Hampshire,		Proj_New_Hampshire_CS83,
-
-    PCS_NAD83_New_Jersey,		Proj_New_Jersey_CS83,
-
-    PCS_NAD83_New_Mexico_East,		Proj_New_Mexico_CS83_East,
-    PCS_NAD83_New_Mexico_Cent,		Proj_New_Mexico_CS83_Central,
-    PCS_NAD83_New_Mexico_West,		Proj_New_Mexico_CS83_West,
-
-    PCS_NAD83_New_York_East,		Proj_New_York_CS83_East,
-    PCS_NAD83_New_York_Central,		Proj_New_York_CS83_Central,
-    PCS_NAD83_New_York_West,		Proj_New_York_CS83_West,
-    PCS_NAD83_New_York_Long_Is,		Proj_New_York_CS83_Long_Island,
-
-    PCS_NAD83_North_Carolina,	       	Proj_North_Carolina_CS83,
-
-    PCS_NAD83_North_Dakota_N,		Proj_North_Dakota_CS83_North,
-    PCS_NAD83_North_Dakota_S,		Proj_North_Dakota_CS83_South,
-
-    PCS_NAD83_Ohio_North,		Proj_Ohio_CS83_North,
-    PCS_NAD83_Ohio_South,		Proj_Ohio_CS83_South,
-
-    PCS_NAD83_Oklahoma_North,		Proj_Oklahoma_CS83_North,
-    PCS_NAD83_Oklahoma_South,		Proj_Oklahoma_CS83_South,
-
-    PCS_NAD83_Oregon_North,		Proj_Oregon_CS83_North,
-    PCS_NAD83_Oregon_South,		Proj_Oregon_CS83_South,
-
-    PCS_NAD83_Pennsylvania_N,		Proj_Pennsylvania_CS83_North,
-    PCS_NAD83_Pennsylvania_S,		Proj_Pennsylvania_CS83_South,
-
-    PCS_NAD83_Rhode_Island,		Proj_Rhode_Island_CS83,
-
-    PCS_NAD83_South_Carolina,		Proj_South_Carolina_CS83,
-
-    PCS_NAD83_South_Dakota_N,		Proj_South_Dakota_CS83_North,
-    PCS_NAD83_South_Dakota_S,		Proj_South_Dakota_CS83_South,
-
-    PCS_NAD83_Tennessee,		Proj_Tennessee_CS83,
-
-    PCS_NAD83_Texas_North,		Proj_Texas_CS83_North,
-    PCS_NAD83_Texas_North_Cen,		Proj_Texas_CS83_North_Central,
-    PCS_NAD83_Texas_Central,		Proj_Texas_CS83_Central,
-    PCS_NAD83_Texas_South_Cen,		Proj_Texas_CS83_South_Central,
-    PCS_NAD83_Texas_South,		Proj_Texas_CS83_South,
-
-    PCS_NAD83_Utah_North,		Proj_Utah_CS83_North,
-    PCS_NAD83_Utah_Central,		Proj_Utah_CS83_Central,
-    PCS_NAD83_Utah_South,		Proj_Utah_CS83_South,
-
-    PCS_NAD83_Vermont,			Proj_Vermont_CS83,
-
-    PCS_NAD83_Virginia_North,		Proj_Virginia_CS83_North,
-    PCS_NAD83_Virginia_South,		Proj_Virginia_CS83_South,
-
-    PCS_NAD83_Washington_North,		Proj_Washington_CS83_North,
-    PCS_NAD83_Washington_South,		Proj_Washington_CS83_South,
-
-    PCS_NAD83_West_Virginia_N,		Proj_West_Virginia_CS83_North,
-    PCS_NAD83_West_Virginia_S,		Proj_West_Virginia_CS83_South,
-
-    PCS_NAD83_Wisconsin_North,		Proj_Wisconsin_CS83_North,
-    PCS_NAD83_Wisconsin_Cen,		Proj_Wisconsin_CS83_Central,
-    PCS_NAD83_Wisconsin_South,		Proj_Wisconsin_CS83_South,
-
-    PCS_NAD83_Wyoming_East,		Proj_Wyoming_CS83_East,
-    PCS_NAD83_Wyoming_E_Cen,		Proj_Wyoming_CS83_East_Central,
-    PCS_NAD83_Wyoming_W_Cen,		Proj_Wyoming_CS83_West_Central,
-    PCS_NAD83_Wyoming_West,		Proj_Wyoming_CS83_West,
-    
-    PCS_NAD83_Puerto_Rico_Virgin_Is,	Proj_Puerto_Rico_Virgin_Is,
-
-    PCS_NAD27_Alabama_East,		Proj_Alabama_CS27_East,
-    PCS_NAD27_Alabama_West,		Proj_Alabama_CS27_West,
-
-    PCS_NAD27_Alaska_zone_1,		Proj_Alaska_CS27_1,
-    PCS_NAD27_Alaska_zone_2,		Proj_Alaska_CS27_2,
-    PCS_NAD27_Alaska_zone_3,		Proj_Alaska_CS27_3,
-    PCS_NAD27_Alaska_zone_4,		Proj_Alaska_CS27_4,
-    PCS_NAD27_Alaska_zone_5,		Proj_Alaska_CS27_5,
-    PCS_NAD27_Alaska_zone_6,		Proj_Alaska_CS27_6,
-    PCS_NAD27_Alaska_zone_7,		Proj_Alaska_CS27_7,
-    PCS_NAD27_Alaska_zone_8,		Proj_Alaska_CS27_8,
-    PCS_NAD27_Alaska_zone_9,		Proj_Alaska_CS27_9,
-    PCS_NAD27_Alaska_zone_10,		Proj_Alaska_CS27_10,
-
-    PCS_NAD27_California_I,		Proj_California_CS27_I,
-    PCS_NAD27_California_II,		Proj_California_CS27_II,
-    PCS_NAD27_California_III,		Proj_California_CS27_III,
-    PCS_NAD27_California_IV,		Proj_California_CS27_IV,
-    PCS_NAD27_California_V,		Proj_California_CS27_V,
-    PCS_NAD27_California_VI,		Proj_California_CS27_VI,
-    PCS_NAD27_California_VII,		Proj_California_CS27_VII,
-
-    PCS_NAD27_Arizona_East,		Proj_Arizona_Coordinate_System_east,
-    PCS_NAD27_Arizona_Central,		Proj_Arizona_Coordinate_System_Central,
-    PCS_NAD27_Arizona_West,		Proj_Arizona_Coordinate_System_west,
-
-    PCS_NAD27_Arkansas_North,		Proj_Arkansas_CS27_North,
-    PCS_NAD27_Arkansas_South,		Proj_Arkansas_CS27_South,
-
-    PCS_NAD27_Colorado_North,		Proj_Colorado_CS27_North,
-    PCS_NAD27_Colorado_Central,		Proj_Colorado_CS27_Central,
-    PCS_NAD27_Colorado_South,		Proj_Colorado_CS27_South,
-
-    PCS_NAD27_Connecticut,		Proj_Connecticut_CS27,
-
-    PCS_NAD27_Delaware,			Proj_Delaware_CS27,
-
-    PCS_NAD27_Florida_East,		Proj_Florida_CS27_East,
-    PCS_NAD27_Florida_North,		Proj_Florida_CS27_North,
-    PCS_NAD27_Florida_West,		Proj_Florida_CS27_West,
-
-    PCS_NAD27_Hawaii_zone_1,		Proj_Hawaii_CS27_1,
-    PCS_NAD27_Hawaii_zone_2,		Proj_Hawaii_CS27_2,
-    PCS_NAD27_Hawaii_zone_3,		Proj_Hawaii_CS27_3,
-    PCS_NAD27_Hawaii_zone_4,		Proj_Hawaii_CS27_4,
-    PCS_NAD27_Hawaii_zone_5,		Proj_Hawaii_CS27_5,
-
-    PCS_NAD27_Georgia_East,		Proj_Georgia_CS27_East,
-    PCS_NAD27_Georgia_West,		Proj_Georgia_CS27_West,
-
-    PCS_NAD27_Idaho_East,		Proj_Idaho_CS27_East,
-    PCS_NAD27_Idaho_Central,		Proj_Idaho_CS27_Central,
-    PCS_NAD27_Idaho_West,		Proj_Idaho_CS27_West,
-
-    PCS_NAD27_Illinois_East,		Proj_Illinois_CS27_East,
-    PCS_NAD27_Illinois_West,		Proj_Illinois_CS27_West,
-
-    PCS_NAD27_Indiana_East,		Proj_Indiana_CS27_East,
-    PCS_NAD27_Indiana_West,		Proj_Indiana_CS27_West,
-
-    PCS_NAD27_Iowa_North,      		Proj_Iowa_CS27_North,
-    PCS_NAD27_Iowa_South,      		Proj_Iowa_CS27_South,
-
-    PCS_NAD27_Kansas_North,		Proj_Kansas_CS27_North,
-    PCS_NAD27_Kansas_South,		Proj_Kansas_CS27_South,
-
-    PCS_NAD27_Kentucky_North,		Proj_Kentucky_CS27_North,
-    PCS_NAD27_Kentucky_South,		Proj_Kentucky_CS27_South,
-
-    PCS_NAD27_Louisiana_North,		Proj_Louisiana_CS27_North,
-    PCS_NAD27_Louisiana_South,		Proj_Louisiana_CS27_South,
-
-    PCS_NAD27_Maine_East,		Proj_Maine_CS27_East,
-    PCS_NAD27_Maine_West,		Proj_Maine_CS27_West,
-
-    PCS_NAD27_Maryland,			Proj_Maryland_CS27,
-
-    PCS_NAD27_Massachusetts,		Proj_Massachusetts_CS27_Mainland,
-    PCS_NAD27_Massachusetts_Is,		Proj_Massachusetts_CS27_Island,
-
-    PCS_NAD27_Michigan_North,		Proj_Michigan_CS27_North,
-    PCS_NAD27_Michigan_Central,		Proj_Michigan_CS27_Central,
-    PCS_NAD27_Michigan_South,		Proj_Michigan_CS27_South,
-
-    PCS_NAD27_Minnesota_North,		Proj_Minnesota_CS27_North,
-    PCS_NAD27_Minnesota_Cent,		Proj_Minnesota_CS27_Central,
-    PCS_NAD27_Minnesota_South,		Proj_Minnesota_CS27_South,
-
-    PCS_NAD27_Mississippi_East,		Proj_Mississippi_CS27_East,
-    PCS_NAD27_Mississippi_West,		Proj_Mississippi_CS27_West,
-
-    PCS_NAD27_Missouri_East,		Proj_Missouri_CS27_East,
-    PCS_NAD27_Missouri_Central,		Proj_Missouri_CS27_Central,
-    PCS_NAD27_Missouri_West,		Proj_Missouri_CS27_West,
-
-    PCS_NAD27_Montana_North,		Proj_Montana_CS27_North,
-    PCS_NAD27_Montana_Central,		Proj_Montana_CS27_Central,
-    PCS_NAD27_Montana_South,		Proj_Montana_CS27_South,
-
-    PCS_NAD27_Nebraska_North,		Proj_Nebraska_CS27_North,
-    PCS_NAD27_Nebraska_South,		Proj_Nebraska_CS27_South,
-
-    PCS_NAD27_Nevada_East,		Proj_Nevada_CS27_East,
-    PCS_NAD27_Nevada_Central,		Proj_Nevada_CS27_Central,
-    PCS_NAD27_Nevada_West,		Proj_Nevada_CS27_West,
-
-    PCS_NAD27_New_Hampshire,		Proj_New_Hampshire_CS27,
-
-    PCS_NAD27_New_Jersey,		Proj_New_Jersey_CS27,
-
-    PCS_NAD27_New_Mexico_East,		Proj_New_Mexico_CS27_East,
-    PCS_NAD27_New_Mexico_Cent,		Proj_New_Mexico_CS27_Central,
-    PCS_NAD27_New_Mexico_West,		Proj_New_Mexico_CS27_West,
-
-    PCS_NAD27_New_York_East,		Proj_New_York_CS27_East,
-    PCS_NAD27_New_York_Central,		Proj_New_York_CS27_Central,
-    PCS_NAD27_New_York_West,		Proj_New_York_CS27_West,
-    PCS_NAD27_New_York_Long_Is,		Proj_New_York_CS27_Long_Island,
-
-    PCS_NAD27_North_Carolina,	       	Proj_North_Carolina_CS27,
-
-    PCS_NAD27_North_Dakota_N,		Proj_North_Dakota_CS27_North,
-    PCS_NAD27_North_Dakota_S,		Proj_North_Dakota_CS27_South,
-
-    PCS_NAD27_Ohio_North,		Proj_Ohio_CS27_North,
-    PCS_NAD27_Ohio_South,		Proj_Ohio_CS27_South,
-
-    PCS_NAD27_Oklahoma_North,		Proj_Oklahoma_CS27_North,
-    PCS_NAD27_Oklahoma_South,		Proj_Oklahoma_CS27_South,
-
-    PCS_NAD27_Oregon_North,		Proj_Oregon_CS27_North,
-    PCS_NAD27_Oregon_South,		Proj_Oregon_CS27_South,
-
-    PCS_NAD27_Pennsylvania_N,		Proj_Pennsylvania_CS27_North,
-    PCS_NAD27_Pennsylvania_S,		Proj_Pennsylvania_CS27_South,
-
-    PCS_NAD27_Rhode_Island,		Proj_Rhode_Island_CS27,
-
-    PCS_NAD27_South_Carolina_N,		Proj_South_Carolina_CS27_North,
-    PCS_NAD27_South_Carolina_S,		Proj_South_Carolina_CS27_South,
-
-    PCS_NAD27_South_Dakota_N,		Proj_South_Dakota_CS27_North,
-    PCS_NAD27_South_Dakota_S,		Proj_South_Dakota_CS27_South,
-
-    PCS_NAD27_Tennessee,		Proj_Tennessee_CS27,
-
-    PCS_NAD27_Texas_North,		Proj_Texas_CS27_North,
-    PCS_NAD27_Texas_North_Cen,		Proj_Texas_CS27_North_Central,
-    PCS_NAD27_Texas_Central,		Proj_Texas_CS27_Central,
-    PCS_NAD27_Texas_South_Cen,		Proj_Texas_CS27_South_Central,
-    PCS_NAD27_Texas_South,		Proj_Texas_CS27_South,
-
-    PCS_NAD27_Utah_North,		Proj_Utah_CS27_North,
-    PCS_NAD27_Utah_Central,		Proj_Utah_CS27_Central,
-    PCS_NAD27_Utah_South,		Proj_Utah_CS27_South,
-
-    PCS_NAD27_Vermont,			Proj_Vermont_CS27,
-
-    PCS_NAD27_Virginia_North,		Proj_Virginia_CS27_North,
-    PCS_NAD27_Virginia_South,		Proj_Virginia_CS27_South,
-
-    PCS_NAD27_Washington_North,		Proj_Washington_CS27_North,
-    PCS_NAD27_Washington_South,		Proj_Washington_CS27_South,
-
-    PCS_NAD27_West_Virginia_N,		Proj_West_Virginia_CS27_North,
-    PCS_NAD27_West_Virginia_S,		Proj_West_Virginia_CS27_South,
-
-    PCS_NAD27_Wisconsin_North,		Proj_Wisconsin_CS27_North,
-    PCS_NAD27_Wisconsin_Cen,		Proj_Wisconsin_CS27_Central,
-    PCS_NAD27_Wisconsin_South,		Proj_Wisconsin_CS27_South,
-
-    PCS_NAD27_Wyoming_East,		Proj_Wyoming_CS27_East,
-    PCS_NAD27_Wyoming_E_Cen,		Proj_Wyoming_CS27_East_Central,
-    PCS_NAD27_Wyoming_W_Cen,		Proj_Wyoming_CS27_West_Central,
-    PCS_NAD27_Wyoming_West,		Proj_Wyoming_CS27_West,
-    
-    PCS_NAD27_Puerto_Rico,		Proj_Puerto_Rico_CS27,
-
-    KvUserDefined
-};
-
-/************************************************************************/
-/*                          GTIFMapSysToPCS()                           */
-/*                                                                      */
-/*      Given a Datum, MapSys and zone value generate the best PCS      */
-/*      code possible.                                                  */
-/************************************************************************/
-
-int	GTIFMapSysToPCS( int MapSys, int Datum, int nZone )
-
-{
-    int		PCSCode = KvUserDefined;
-
-    if( MapSys == MapSys_UTM_North )
-    {
-	if( Datum == GCS_NAD27 )
-	    PCSCode = PCS_NAD27_UTM_zone_3N + nZone - 3;
-	else if( Datum == GCS_NAD83 )
-	    PCSCode = PCS_NAD83_UTM_zone_3N + nZone - 3;
-	else if( Datum == GCS_WGS_72 )
-	    PCSCode = PCS_WGS72_UTM_zone_1N + nZone - 1;
-	else if( Datum == GCS_WGS_72BE )
-	    PCSCode = PCS_WGS72BE_UTM_zone_1N + nZone - 1;
-	else if( Datum == GCS_WGS_84 )
-	    PCSCode = PCS_WGS84_UTM_zone_1N + nZone - 1;
-    }
-    else if( MapSys == MapSys_UTM_South )
-    {
-	if( Datum == GCS_WGS_72 )
-	    PCSCode = PCS_WGS72_UTM_zone_1S + nZone - 1;
-	else if( Datum == GCS_WGS_72BE )
-	    PCSCode = PCS_WGS72BE_UTM_zone_1S + nZone - 1;
-	else if( Datum == GCS_WGS_84 )
-	    PCSCode = PCS_WGS84_UTM_zone_1S + nZone - 1;
-    }
-    else if( MapSys == MapSys_State_Plane_27 )
-    {
-	int		i;
-
-        PCSCode = 10000 + nZone;
-	for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-	{
-	    if( StatePlaneTable[i+1] == PCSCode )
-	        PCSCode = StatePlaneTable[i];
-	}
-
-        /* Old EPSG code was in error for Tennesse CS27, override */
-        if( nZone == 4100 )
-            PCSCode = 2204;
-    }
-    else if( MapSys == MapSys_State_Plane_83 )
-    {
-	int		i;
-
-        PCSCode = 10000 + nZone + 30;
-
-	for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-	{
-	    if( StatePlaneTable[i+1] == PCSCode )
-	        PCSCode = StatePlaneTable[i];
-	}
-
-        /* Old EPSG code was in error for Kentucky North CS83, override */
-        if( nZone == 1601 )
-            PCSCode = 2205;
-    }
-
-    return( PCSCode );
-}
-
-/************************************************************************/
-/*                          GTIFMapSysToProj()                          */
-/*                                                                      */
-/*      Given a MapSys and zone value generate the best Proj_           */
-/*      code possible.                                                  */
-/************************************************************************/
-
-int	GTIFMapSysToProj( int MapSys, int nZone )
-
-{
-    int		ProjCode = KvUserDefined;
-
-    if( MapSys == MapSys_UTM_North )
-    {
-        ProjCode = Proj_UTM_zone_1N + nZone - 1;
-    }
-    else if( MapSys == MapSys_UTM_South )
-    {
-        ProjCode = Proj_UTM_zone_1S + nZone - 1;
-    }
-    else if( MapSys == MapSys_State_Plane_27 )
-    {
-        ProjCode = 10000 + nZone;
-
-        /* Tennesse override */
-        if( nZone == 4100 )
-            ProjCode = 15302;
-    }
-    else if( MapSys == MapSys_State_Plane_83 )
-    {
-        ProjCode = 10000 + nZone + 30;
-
-        /* Kentucky North override */
-        if( nZone == 1601 )
-            ProjCode = 15303;
-    }
-
-    return( ProjCode );
-}
-
-/************************************************************************/
-/*                          GTIFPCSToMapSys()                           */
-/************************************************************************/
-
-/**
- * Translate a PCS_ code into a UTM or State Plane map system, a datum,
- * and a zone if possible.
- *
- * @param PCSCode The projection code (PCS_*) as would be stored in the
- * ProjectedCSTypeGeoKey of a GeoTIFF file.
- *
- * @param pDatum Pointer to an integer into which the datum code (GCS_*)
- * is put if the function succeeds.
- *
- * @param pZone Pointer to an integer into which the zone will be placed
- * if the function is successful.
- *
- * @return Returns either MapSys_UTM_North, MapSys_UTM_South,
- * MapSys_State_Plane_83, MapSys_State_Plane_27 or KvUserDefined.
- * KvUserDefined indicates that the
- * function failed to recognise the projection as UTM or State Plane.
- *
- * The zone value is only set if the return code is other than KvUserDefined.
- * For utm map system the returned zone will be between 1 and 60.  For
- * State Plane, the USGS state plane zone number is returned.  For instance,
- * Alabama East is zone 101.
- *
- * The datum (really this is the GCS) is set to a GCS_ value such as GCS_NAD27.
- *
- * This function is useful to recognise (most) UTM and State Plane coordinate
- * systems, even if CSV files aren't available to translate them automatically.
- * It is used as a fallback mechanism by GTIFGetDefn() for normalization when
- * CSV files aren't found. 
- */
-
-int GTIFPCSToMapSys( int PCSCode, int * pDatum, int * pZone )
-
-{
-    int		Datum = KvUserDefined, Proj = KvUserDefined;
-    int		nZone = KvUserDefined, i;
-
-/* -------------------------------------------------------------------- */
-/*      UTM with various datums.  Note there are lots of PCS UTM        */
-/*      codes not done yet which use strange datums.                    */
-/* -------------------------------------------------------------------- */
-    if( PCSCode >= PCS_NAD27_UTM_zone_3N && PCSCode <= PCS_NAD27_UTM_zone_22N )
-    {
-	Datum = GCS_NAD27;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_NAD27_UTM_zone_3N + 3;
-    }
-    else if( PCSCode >= PCS_NAD83_UTM_zone_3N 
-	     && PCSCode <= PCS_NAD83_UTM_zone_23N )
-    {
-	Datum = GCS_NAD83;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_NAD83_UTM_zone_3N + 3;
-    }
-
-    else if( PCSCode >= PCS_WGS72_UTM_zone_1N
-	     && PCSCode <= PCS_WGS72_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_72;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS72_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS72_UTM_zone_1S
-	     && PCSCode <= PCS_WGS72_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_72;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS72_UTM_zone_1S + 1;
-    }
-
-    else if( PCSCode >= PCS_WGS72BE_UTM_zone_1N
-	     && PCSCode <= PCS_WGS72BE_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_72BE;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS72BE_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS72BE_UTM_zone_1S
-	     && PCSCode <= PCS_WGS72BE_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_72BE;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS72BE_UTM_zone_1S + 1;
-    }
-
-    else if( PCSCode >= PCS_WGS84_UTM_zone_1N
-	     && PCSCode <= PCS_WGS84_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_84;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS84_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS84_UTM_zone_1S
-	     && PCSCode <= PCS_WGS84_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_84;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS84_UTM_zone_1S + 1;
-    }
-    else if( PCSCode >= PCS_SAD69_UTM_zone_18N 
-	     && PCSCode <= PCS_SAD69_UTM_zone_22N )
-    {
-	Datum = KvUserDefined;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_SAD69_UTM_zone_18N + 18;
-    }
-    else if( PCSCode >= PCS_SAD69_UTM_zone_17S
-	     && PCSCode <= PCS_SAD69_UTM_zone_25S )
-    {
-	Datum = KvUserDefined;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_SAD69_UTM_zone_17S + 17;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      State Plane zones, first we translate any PCS_ codes to		*/
-/*	a Proj_ code that we can get a handle on.			*/
-/* -------------------------------------------------------------------- */
-    for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-    {
-	if( StatePlaneTable[i] == PCSCode )
-	    PCSCode = StatePlaneTable[i+1];
-    }
-
-    if( PCSCode <= 15900 && PCSCode >= 10000 )
-    {
-	if( (PCSCode % 100) >= 30 )
-        {
-            Proj = MapSys_State_Plane_83;
-	    Datum = GCS_NAD83;
-        }
-	else
-        {
-            Proj = MapSys_State_Plane_27;
-	    Datum = GCS_NAD27;
-        }
-	
-	nZone = PCSCode - 10000;
-	if( Datum == GCS_NAD83 )
-	    nZone -= 30;
-    }
-
-    if( pDatum != NULL )
-        *pDatum = Datum;
-
-    if( pZone != NULL )
-        *pZone = nZone;
-
-    return( Proj );
-}
-
-/************************************************************************/
-/*                          GTIFProjToMapSys()                          */
-/************************************************************************/
-
-/**
- * Translate a Proj_ code into a UTM or State Plane map system, and a zone
- * if possible.
- *
- * @param ProjCode The projection code (Proj_*) as would be stored in the
- * ProjectionGeoKey of a GeoTIFF file.
- * @param pZone Pointer to an integer into which the zone will be placed
- * if the function is successful.
- *
- * @return Returns either MapSys_UTM_North, MapSys_UTM_South,
- * MapSys_State_Plane_27, MapSys_State_Plane_83 or KvUserDefined.
- * KvUserDefined indicates that the
- * function failed to recognise the projection as UTM or State Plane.
- *
- * The zone value is only set if the return code is other than KvUserDefined.
- * For utm map system the returned zone will be between 1 and 60.  For
- * State Plane, the USGS state plane zone number is returned.  For instance,
- * Alabama East is zone 101.
- *
- * This function is useful to recognise UTM and State Plane coordinate
- * systems, and to extract zone numbers so the projections can be
- * represented as UTM rather than as the underlying projection method such
- * Transverse Mercator for instance.
- */
-
-int GTIFProjToMapSys( int ProjCode, int * pZone )
-
-{
-    int		nZone = KvUserDefined;
-    int		MapSys = KvUserDefined;
-
-/* -------------------------------------------------------------------- */
-/*      Handle UTM.                                                     */
-/* -------------------------------------------------------------------- */
-    if( ProjCode >= Proj_UTM_zone_1N && ProjCode <= Proj_UTM_zone_60N )
-    {
-	MapSys = MapSys_UTM_North;
-	nZone = ProjCode - Proj_UTM_zone_1N + 1;
-    }
-    else if( ProjCode >= Proj_UTM_zone_1S && ProjCode <= Proj_UTM_zone_60S )
-    {
-	MapSys = MapSys_UTM_South;
-	nZone = ProjCode - Proj_UTM_zone_1S + 1;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle State Plane.  I think there are some anomolies in        */
-/*      here, so this is a bit risky.                                   */
-/* -------------------------------------------------------------------- */
-    else if( ProjCode >= 10101 && ProjCode <= 15299 )
-    {
-        if( ProjCode % 100 >= 30 )
-        {
-            MapSys = MapSys_State_Plane_83;
-            nZone = ProjCode - 10000 - 30;
-        }
-        else
-        {
-            MapSys = MapSys_State_Plane_27;
-            nZone = ProjCode - 10000;
-        }
-    }
-    
-    if( pZone != NULL )
-        *pZone = nZone;
-
-    return( MapSys );
-}
-
diff --git a/Utilities/otbgeotiff/geo_free.c b/Utilities/otbgeotiff/geo_free.c
deleted file mode 100644
index a43fcad354634ceebc9470cda83027cdf5303c51..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_free.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/**********************************************************************
- *
- *  geo_free.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-
-/**********************************************************************
- *
- *                        Public Routines
- *
- **********************************************************************/
-
-/**
-  
-This function deallocates an existing GeoTIFF access handle previously
-created with GTIFNew().  If the handle was
-used to write GeoTIFF keys to the TIFF file, the 
-GTIFWriteKeys() function should be used
-to flush results to the file before calling GTIFFree().  GTIFFree()
-should be called before XTIFFClose() is
-called on the corresponding TIFF file handle.<p>
-
-*/
-
-void GTIFFree(GTIF* gtif)
-{
-    int     i;
-	
-    if (!gtif) return;
-	
-    /* Free parameter arrays */
-    if (gtif->gt_double) _GTIFFree (gtif->gt_double);
-    if (gtif->gt_short) _GTIFFree (gtif->gt_short);
-	
-    /* Free GeoKey arrays */
-    if (gtif->gt_keys)
-    {
-        for (i = 0; i < MAX_KEYS; i++)
-        {
-            if (gtif->gt_keys[i].gk_type == TYPE_ASCII)
-            {
-                _GTIFFree (gtif->gt_keys[i].gk_data);
-            }
-        }
-        _GTIFFree (gtif->gt_keys);
-    }
-    if (gtif->gt_keyindex) _GTIFFree (gtif->gt_keyindex);
-	
-    _GTIFFree (gtif);
-}
diff --git a/Utilities/otbgeotiff/geo_get.c b/Utilities/otbgeotiff/geo_get.c
deleted file mode 100644
index f027bd3aa278d9a342b283207ee0cf18de1c477a..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_get.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/**********************************************************************
- *
- *  geo_get.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *  Revision History;
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    3 July,  1995      Greg Martin             Fix strings and index
- *    6 July,  1995      Niles D. Ritter         Unfix indexing.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-/* return the Header info of this geotiff file */
-
-void GTIFDirectoryInfo(GTIF *gtif, int version[3], int *keycount)
-{
-        if (version)
-        {
-                version[0]  = gtif->gt_version;
-                version[1]  = gtif->gt_rev_major;
-                version[2]  = gtif->gt_rev_minor;
-        }
-        if (keycount) *keycount = gtif->gt_num_keys;
-}
-
-
-int GTIFKeyInfo(GTIF *gtif, geokey_t key, int *size, tagtype_t* type)
-{
-        int index = gtif->gt_keyindex[ key ];
-        GeoKey *keyptr;
-
-        if (!index) return 0;
-
-        keyptr = gtif->gt_keys + index;
-        if (size) *size = (int) keyptr->gk_size;
-        if (type) *type = keyptr->gk_type;
-
-        return keyptr->gk_count;
-}
-
-/** 
-
-This function reads the value of a single GeoKey from a GeoTIFF file.
-
-@param gtif The geotiff information handle from GTIFNew().
-
-@param thekey The geokey_t name (such as ProjectedCSTypeGeoKey).
-This must come from the list of legal geokey_t values
-(an enumeration) listed below.
-
-@param val The <b>val</b> argument is a pointer to the
-variable into which the value should be read.  The type of the variable
-varies depending on the geokey_t given.  While there is no ready mapping
-of geokey_t values onto types, in general code values are of type <i>short</i>,
-citations are strings, and everything else is of type <i>double</i>.  Note
-that pointer's to <i>int</i> should never be passed to GTIFKeyGet() for
-integer values as they will be shorts, and the int's may not be properly
-initialized (and will be grossly wrong on MSB systems).
-
-@param index Indicates how far into the list of values
-for this geokey to offset. Should normally be zero.
-
-@param count Indicates how many values
-to read.  At this time all keys except for strings have only one value,
-so <b>index</b> should be zero, and <b>count</b> should be one.
-
-@return The GTIFKeyGet() function returns the number of values read.  Normally
-this would be one if successful or zero if the key doesn't exist for this
-file.
-
-From geokeys.inc we see the following geokey_t values are possible:<p>
-
-<pre>
--- 6.2.1 GeoTIFF Configuration Keys --
-
-ValuePair(  GTModelTypeGeoKey,	1024) -- Section 6.3.1.1 Codes       --
-ValuePair(  GTRasterTypeGeoKey,	1025) -- Section 6.3.1.2 Codes       --
-ValuePair(  GTCitationGeoKey,	1026) -- documentation --
-
--- 6.2.2 Geographic CS Parameter Keys --
-
-ValuePair(  GeographicTypeGeoKey,	2048) -- Section 6.3.2.1 Codes     --
-ValuePair(  GeogCitationGeoKey,	2049) -- documentation             --
-ValuePair(  GeogGeodeticDatumGeoKey,	2050) -- Section 6.3.2.2 Codes     --
-ValuePair(  GeogPrimeMeridianGeoKey,	2051) -- Section 6.3.2.4 codes     --
-ValuePair(  GeogLinearUnitsGeoKey,	2052) -- Section 6.3.1.3 Codes     --
-ValuePair(  GeogLinearUnitSizeGeoKey,	2053) -- meters                    --
-ValuePair(  GeogAngularUnitsGeoKey,	2054) -- Section 6.3.1.4 Codes     --
-ValuePair(  GeogAngularUnitSizeGeoKey,	2055) -- radians                   --
-ValuePair(  GeogEllipsoidGeoKey,	2056) -- Section 6.3.2.3 Codes     --
-ValuePair(  GeogSemiMajorAxisGeoKey,	2057) -- GeogLinearUnits           --
-ValuePair(  GeogSemiMinorAxisGeoKey,	2058) -- GeogLinearUnits           --
-ValuePair(  GeogInvFlatteningGeoKey,	2059) -- ratio                     --
-ValuePair(  GeogAzimuthUnitsGeoKey,	2060) -- Section 6.3.1.4 Codes     --
-ValuePair(  GeogPrimeMeridianLongGeoKey,	2061) -- GeoAngularUnit            --
-
--- 6.2.3 Projected CS Parameter Keys --
---    Several keys have been renamed,--
---    and the deprecated names aliased for backward compatibility --
-
-ValuePair(  ProjectedCSTypeGeoKey,	3072)     -- Section 6.3.3.1 codes   --
-ValuePair(  PCSCitationGeoKey,	3073)     -- documentation           --
-ValuePair(  ProjectionGeoKey,	3074)     -- Section 6.3.3.2 codes   --
-ValuePair(  ProjCoordTransGeoKey,	3075)     -- Section 6.3.3.3 codes   --
-ValuePair(  ProjLinearUnitsGeoKey,	3076)     -- Section 6.3.1.3 codes   --
-ValuePair(  ProjLinearUnitSizeGeoKey,	3077)     -- meters                  --
-ValuePair(  ProjStdParallel1GeoKey,	3078)     -- GeogAngularUnit --
-ValuePair(  ProjStdParallelGeoKey,ProjStdParallel1GeoKey) -- ** alias **   --
-ValuePair(  ProjStdParallel2GeoKey,	3079)     -- GeogAngularUnit --
-ValuePair(  ProjNatOriginLongGeoKey,	3080)     -- GeogAngularUnit --
-ValuePair(  ProjOriginLongGeoKey,ProjNatOriginLongGeoKey) -- ** alias **     --
-ValuePair(  ProjNatOriginLatGeoKey,	3081)     -- GeogAngularUnit --
-ValuePair(  ProjOriginLatGeoKey,ProjNatOriginLatGeoKey)   -- ** alias **     --
-ValuePair(  ProjFalseEastingGeoKey,	3082)     -- ProjLinearUnits --
-ValuePair(  ProjFalseNorthingGeoKey,	3083)     -- ProjLinearUnits --
-ValuePair(  ProjFalseOriginLongGeoKey,	3084)     -- GeogAngularUnit --
-ValuePair(  ProjFalseOriginLatGeoKey,	3085)     -- GeogAngularUnit --
-ValuePair(  ProjFalseOriginEastingGeoKey,	3086)     -- ProjLinearUnits --
-ValuePair(  ProjFalseOriginNorthingGeoKey,	3087)     -- ProjLinearUnits --
-ValuePair(  ProjCenterLongGeoKey,	3088)     -- GeogAngularUnit --
-ValuePair(  ProjCenterLatGeoKey,	3089)     -- GeogAngularUnit --
-ValuePair(  ProjCenterEastingGeoKey,	3090)     -- ProjLinearUnits --
-ValuePair(  ProjCenterNorthingGeoKey,	3091)     -- ProjLinearUnits --
-ValuePair(  ProjScaleAtNatOriginGeoKey,	3092)     -- ratio   --
-ValuePair(  ProjScaleAtOriginGeoKey,ProjScaleAtNatOriginGeoKey)  -- ** alias **   --
-ValuePair(  ProjScaleAtCenterGeoKey,	3093)     -- ratio   --
-ValuePair(  ProjAzimuthAngleGeoKey,	3094)     -- GeogAzimuthUnit --
-ValuePair(  ProjStraightVertPoleLongGeoKey,	3095)     -- GeogAngularUnit --
-
- 6.2.4 Vertical CS Keys 
-   
-ValuePair(  VerticalCSTypeGeoKey,	4096)  -- Section 6.3.4.1 codes   --
-ValuePair(  VerticalCitationGeoKey,	4097)  -- documentation --
-ValuePair(  VerticalDatumGeoKey,	4098)  -- Section 6.3.4.2 codes   --
-ValuePair(  VerticalUnitsGeoKey,	4099)  -- Section 6.3.1 (.x) codes   --
-</pre>
-*/
-
-int GTIFKeyGet(GTIF *gtif, geokey_t thekey, void *val, int index, int count)
-{
-        int kindex = gtif->gt_keyindex[ thekey ];
-        GeoKey *key;
-        gsize_t size;
-        char *data;
-        tagtype_t type;
-
-        if (!kindex) return 0;
-
-        key = gtif->gt_keys+kindex;
-        if (!count) count = key->gk_count - index;
-        if (count <=0) return 0;
-        if (count > key->gk_count) count = key->gk_count;
-        size = key->gk_size;
-        type = key->gk_type;
-
-        if (count==1 && type==TYPE_SHORT) data = (char *)&key->gk_data;
-        else data = key->gk_data;
-
-        _GTIFmemcpy( val, data + index*size, count*size );
-
-        if (type==TYPE_ASCII)
-           ((char *)val)[count-1] = '\0'; /* replace last char with NULL */
-
-        return count;
-}
diff --git a/Utilities/otbgeotiff/geo_keyp.h b/Utilities/otbgeotiff/geo_keyp.h
deleted file mode 100644
index 140bf403acaa469ad7a2811c7f2ef83ad813cceb..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_keyp.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**********************************************************************
- *
- *  geo_keyp.h - private interface for GeoTIFF geokey tag parsing
- *
- *     Written by: Niles D. Ritter
- *
- **********************************************************************/
-
-#ifndef __geo_keyp_h_
-#define __geo_keyp_h_
-
-#include <stdlib.h> /* for size_t */
-
-/*
- * This structure contains the internal program
- * representation of the key entry.
- */
-struct GeoKey {
-	int       gk_key;    /* GeoKey ID        */
-	size_t    gk_size;   /* data byte size   */
-	tagtype_t gk_type;   /* TIFF data type   */
-	long      gk_count;  /* number of values */
-	char*     gk_data;   /* pointer to data, or value */
-};
-typedef struct GeoKey GeoKey;
-
-/*
- *  This structure represents the file-organization of
- *  the key entry. Note that it assumes that short entries
- *  are aligned along 2-byte boundaries.
- */
-struct KeyEntry {
-	pinfo_t ent_key;        /* GeoKey ID            */
-	pinfo_t ent_location;   /* TIFF Tag ID or 0     */
-	pinfo_t ent_count;      /* GeoKey value count   */
-	pinfo_t ent_val_offset; /* value or tag offset  */
-};
-typedef struct KeyEntry KeyEntry;
-
-/*
- * This is the header of the CoordSystemInfoTag. The 'Version'
- *  will only change if the CoorSystemInfoTag structure changes;
- *  The Major Revision will be incremented whenever a new set of
- *  Keys is added or changed, while the Minor revision will be
- *  incremented when only the set of Key-values is increased.
- */
-struct KeyHeader{
-	pinfo_t hdr_version;      /* GeoTIFF Version          */
-	pinfo_t hdr_rev_major;    /* GeoKey Major Revision #  */
-	pinfo_t hdr_rev_minor;    /* GeoKey Minor Revision #  */
-	pinfo_t hdr_num_keys;     /* Number of GeoKeys        */
-};
-typedef struct KeyHeader KeyHeader;
-
-/*
- * This structure holds temporary data while reading or writing
- *  the tags.
- */
-struct TempKeyData {
-    char   *tk_asciiParams;
-    int     tk_asciiParamsLength;
-    int     tk_asciiParamsOffset;
-};
-typedef struct TempKeyData TempKeyData;
-
-
-struct gtiff {
-   tiff_t*    gt_tif;      /* TIFF file descriptor  */
-   TIFFMethod gt_methods;  /* TIFF i/o methods      */
-   int        gt_flags;    /* file flags            */
-   
-   pinfo_t    gt_version;  /* GeoTIFF Version       */
-   pinfo_t    gt_rev_major;/* GeoKey Key Revision   */
-   pinfo_t    gt_rev_minor;/* GeoKey Code Revision  */
-   
-   int        gt_num_keys; /* number of keys        */
-   GeoKey*    gt_keys;     /* array of keys         */
-   int*       gt_keyindex; /* index of a key, if set*/
-   int        gt_keymin;   /* smallest key set      */
-   int        gt_keymax;   /* largest key set       */
-   
-   pinfo_t*   gt_short;    /* array of SHORT vals   */
-   double*    gt_double;   /* array of DOUBLE vals  */
-   int        gt_nshorts;  /* number of SHORT vals  */
-   int        gt_ndoubles; /* number of DOUBLE vals */
-};  
-
-typedef enum {
-	FLAG_FILE_OPEN=1,
-	FLAG_FILE_MODIFIED=2
-} gtiff_flags;
-
-#define MAX_KEYINDEX 65535   /* largest possible key    */
-#define MAX_KEYS 100         /* maximum keys in a file  */
-#define MAX_VALUES 1000      /* maximum values in a tag */
-
-#endif /* __geo_keyp_h_ */
-
diff --git a/Utilities/otbgeotiff/geo_names.c b/Utilities/otbgeotiff/geo_names.c
deleted file mode 100644
index de58ca2a635fd52ab0f1914f4645eddb154edf7d..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_names.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * geo_names.c
- *
- *  This encapsulates all of the value-naming mechanism of 
- *  libgeotiff. 
- *
- *  Written By: Niles Ritter
- */
-
-#include "geotiffio.h"
-#include "geonames.h"
-#include "geo_tiffp.h" /* for tag names */
-
-static KeyInfo _formatInfo[] =  {
-   {TYPE_BYTE,    "Byte"},
-   {TYPE_SHORT,   "Short"},
-   {TYPE_LONG,    "Long"},
-   {TYPE_RATIONAL,"Rational"},
-   {TYPE_ASCII,   "Ascii"},
-   {TYPE_FLOAT,   "Float"},
-   {TYPE_DOUBLE,  "Double"},
-   {TYPE_SBYTE,   "SignedByte"},
-   {TYPE_SSHORT,  "SignedShort"},
-   {TYPE_SLONG,  "SignedLong"},
-   {TYPE_UNKNOWN, "Unknown"},
-    END_LIST
-};
-
-static KeyInfo _tagInfo[] =  {
-    {GTIFF_PIXELSCALE,  "ModelPixelScaleTag"},
-    {GTIFF_TRANSMATRIX, "ModelTransformationTag"},
-    {GTIFF_TIEPOINTS,   "ModelTiepointTag"},
-     /* This alias maps the Intergraph symbol to the current tag */
-    {GTIFF_TRANSMATRIX, "IntergraphMatrixTag"},
-    END_LIST
-};
-
-static char *FindName(KeyInfo *info,int key)
-{
-   static char errmsg[80];
-   
-   while (info->ki_key>=0 && info->ki_key != key) info++;
-
-   if (info->ki_key<0)
-   {
-	   sprintf(errmsg,"Unknown-%d", key );
-	   return errmsg;
-   }
-   return info->ki_name;
-}
-
-char *GTIFKeyName(geokey_t key)
-{
-   return FindName( &_keyInfo[0],key);
-}
-
-char *GTIFTypeName(tagtype_t type)
-{
-   return FindName( &_formatInfo[0],type);
-}
-
-char *GTIFTagName(int tag)
-{
-   return FindName( &_tagInfo[0],tag);
-}
-
-char *GTIFValueName(geokey_t key, int value)
-{
-   KeyInfo *info;
-   
-   switch (key)
-   {
-	/* All codes using linear/angular/whatever units */
-	case GeogLinearUnitsGeoKey: 
-	case ProjLinearUnitsGeoKey: 
-	case GeogAngularUnitsGeoKey: 
-	case GeogAzimuthUnitsGeoKey: 
-		                      info=_geounitsValue; break;
-
-   	/* put other key-dependent lists here */
-	case GTModelTypeGeoKey:       info=_modeltypeValue; break;
-	case GTRasterTypeGeoKey:      info=_rastertypeValue; break;
-	case GeographicTypeGeoKey:    info=_geographicValue; break;
-	case GeogGeodeticDatumGeoKey: info=_geodeticdatumValue; break;
-	case GeogEllipsoidGeoKey:     info=_ellipsoidValue; break;
-	case GeogPrimeMeridianGeoKey: info=_primemeridianValue; break;
-	case ProjectedCSTypeGeoKey:   info=_pcstypeValue; break;
-	case ProjectionGeoKey:        info=_projectionValue; break;
-	case ProjCoordTransGeoKey:    info=_coordtransValue; break;
-	case VerticalCSTypeGeoKey:    info=_vertcstypeValue; break;
-	case VerticalDatumGeoKey:     info=_vdatumValue; break;
-
-	/* And if all else fails... */
-   	default:                      info = _csdefaultValue;break;
-   }
-   
-   return FindName( info,value);
-}
-
-/* 
- * Inverse Utilities (name->code) 
- */
-
-
-static int FindCode(KeyInfo *info,char *key)
-{
-   while (info->ki_key>=0 && strcmp(info->ki_name,key) ) info++;
-
-   if (info->ki_key<0)
-   {
-	/* not a registered key; might be generic code */
-	if (!strncmp(key,"Unknown-",8))
-	{
-		int code=-1;
-		sscanf(key,"Unknown-%d",&code);
-		return code;
-	}
-	else return -1;
-   }
-   return info->ki_key;
-}
-
-int GTIFKeyCode(char *key)
-{
-   return FindCode( &_keyInfo[0],key);
-}
-
-int GTIFTypeCode(char *type)
-{
-   return FindCode( &_formatInfo[0],type);
-}
-
-int GTIFTagCode(char *tag)
-{
-   return FindCode( &_tagInfo[0],tag);
-}
-
-
-/*
- *  The key must be determined with GTIFKeyCode() before
- *  the name can be encoded.
- */
-int GTIFValueCode(geokey_t key, char *name)
-{
-   KeyInfo *info;
-   
-   switch (key)
-   {
-	/* All codes using linear/angular/whatever units */
-	case GeogLinearUnitsGeoKey: 
-	case ProjLinearUnitsGeoKey: 
-	case GeogAngularUnitsGeoKey: 
-	case GeogAzimuthUnitsGeoKey: 
-		                      info=_geounitsValue; break;
-
-   	/* put other key-dependent lists here */
-	case GTModelTypeGeoKey:       info=_modeltypeValue; break;
-	case GTRasterTypeGeoKey:      info=_rastertypeValue; break;
-	case GeographicTypeGeoKey:    info=_geographicValue; break;
-	case GeogGeodeticDatumGeoKey: info=_geodeticdatumValue; break;
-	case GeogEllipsoidGeoKey:     info=_ellipsoidValue; break;
-	case GeogPrimeMeridianGeoKey: info=_primemeridianValue; break;
-	case ProjectedCSTypeGeoKey:   info=_pcstypeValue; break;
-	case ProjectionGeoKey:        info=_projectionValue; break;
-	case ProjCoordTransGeoKey:    info=_coordtransValue; break;
-	case VerticalCSTypeGeoKey:    info=_vertcstypeValue; break;
-	case VerticalDatumGeoKey:     info=_vdatumValue; break;
-
-	/* And if all else fails... */
-   	default:                      info = _csdefaultValue;break;
-   }
-   
-   return FindCode( info,name);
-}
-
diff --git a/Utilities/otbgeotiff/geo_new.c b/Utilities/otbgeotiff/geo_new.c
deleted file mode 100644
index 2e53b7fe37ce87da7a1f184d6522c4cddf3c3e3c..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_new.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/**********************************************************************
- *
- *  geo_new.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    7 July,  1995      Greg Martin             Fix index
- *
- * $Log: geo_new.c,v $
- * Revision 1.12  2006/06/26 20:03:37  fwarmerdam
- * If the ascii parameters list is too short for the declared size
- * of an ascii parameter, but it doesn't start off the end of the
- * available string then just trim the length.  This is to make the
- * ESRI sample data file 34105h2.tif work properly.  I wish we had
- * a way of issuing warnings!
- *
- * Revision 1.11  2004/04/27 21:32:08  warmerda
- * Allow GTIFNew(NULL) to work
- *
- * Revision 1.10  2003/09/02 13:52:17  warmerda
- * various hacks to support improperly terminated asciiparms
- *
- * Revision 1.9  2003/06/19 20:04:11  warmerda
- * fix memory underwrite if ascii parameter string is zero length
- *
- * Revision 1.8  2003/06/05 14:20:45  warmerda
- * cosmetic formatting changes
- *
- **********************************************************************/
-
-#include "geotiffio.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-/* private local routines */
-static int ReadKey(GTIF* gt, TempKeyData* tempData,
-                   KeyEntry* entptr, GeoKey* keyptr);
-
-
-/**********************************************************************
- *
- *                        Public Routines
- *
- **********************************************************************/
-
-
-/**
- * Given an open TIFF file, look for GTIF keys and 
- *  values and return GTIF structure.
-
-This function creates a GeoTIFF information interpretation handle
-(GTIF *) based on a passed in TIFF handle originally from 
-XTIFFOpen().  Even though the argument 
-(<b>tif</b>) is shown as type <tt>void *</tt>, it is really normally
-of type <tt>TIFF *</tt>.<p>
-
-The returned GTIF handle can be used to read or write GeoTIFF tags 
-using the various GTIF functions.  The handle should be destroyed using
-GTIFFree() before the file is closed with TIFFClose().<p>
-
-If the file accessed has no GeoTIFF keys, an valid (but empty) GTIF is
-still returned.  GTIFNew() is used both for existing files being read, and
-for new TIFF files that will have GeoTIFF tags written to them.<p>
-
- */
- 
-GTIF* GTIFNew(void *tif)
-{
-    GTIF* gt=(GTIF*)0;
-    int count,bufcount,index;
-    GeoKey *keyptr;
-    pinfo_t *data;
-    KeyEntry *entptr;
-    KeyHeader *header;
-    TempKeyData tempData;
-	
-    gt = (GTIF*)_GTIFcalloc( sizeof(GTIF));
-    if (!gt) goto failure;	
-	
-    /* install TIFF file and I/O methods */
-    gt->gt_tif = (tiff_t *)tif;
-    _GTIFSetDefaultTIFF(&gt->gt_methods);
-
-    tempData.tk_asciiParams = 0;
-    tempData.tk_asciiParamsLength = 0;
-    tempData.tk_asciiParamsOffset = 0;
-	
-    /* since this is an array, GTIF will allocate the memory */
-    if ( tif == NULL 
-         || !(gt->gt_methods.get)(tif, GTIFF_GEOKEYDIRECTORY, &gt->gt_nshorts, &data ))
-    {
-        /* No ProjectionInfo, create a blank one */
-        data=(pinfo_t*)_GTIFcalloc((4+MAX_VALUES)*sizeof(pinfo_t));
-        if (!data) goto failure;	
-        header = (KeyHeader *)data;
-        header->hdr_version = GvCurrentVersion;
-        header->hdr_rev_major = GvCurrentRevision;
-        header->hdr_rev_minor = GvCurrentMinorRev;
-        gt->gt_nshorts=sizeof(KeyHeader)/sizeof(pinfo_t);
-    }
-    gt->gt_short = data;
-    header = (KeyHeader *)data;
-	
-    if (header->hdr_version > GvCurrentVersion) goto failure;
-    if (header->hdr_rev_major > GvCurrentRevision)
-    {
-        /* issue warning */
-    }
-	
-    /* If we got here, then the geokey can be parsed */
-    count = header->hdr_num_keys;
-    gt->gt_num_keys = count;
-    gt->gt_version  = header->hdr_version;
-    gt->gt_rev_major  = header->hdr_rev_major;
-    gt->gt_rev_minor  = header->hdr_rev_minor;
-
-    bufcount = count+MAX_KEYS; /* allow for expansion */
-
-    /* Get the PARAMS Tags, if any */
-    if (tif == NULL
-        || !(gt->gt_methods.get)(tif, GTIFF_DOUBLEPARAMS,
-                                 &gt->gt_ndoubles, &gt->gt_double ))
-    {
-        gt->gt_double=(double*)_GTIFcalloc(MAX_VALUES*sizeof(double));
-        if (!gt->gt_double) goto failure;	
-    }
-    if ( tif == NULL
-         || !(gt->gt_methods.get)(tif, GTIFF_ASCIIPARAMS,
-                                  &tempData.tk_asciiParamsLength,
-                                  &tempData.tk_asciiParams ))
-    {
-        tempData.tk_asciiParams         = 0;
-        tempData.tk_asciiParamsLength   = 0;
-    }
-    else
-    {
-        /* last NULL doesn't count; "|" used for delimiter */
-        --tempData.tk_asciiParamsLength;
-    }
-
-    /* allocate space for GeoKey array and its index */
-    gt->gt_keys = (GeoKey *)_GTIFcalloc( sizeof(GeoKey)*bufcount);
-    if (!gt->gt_keys) goto failure;
-    gt->gt_keyindex = (int *)_GTIFcalloc( sizeof(int)*(MAX_KEYINDEX+1));
-    if (!gt->gt_keyindex) goto failure;
-	
-    /*  Loop to get all GeoKeys */
-    entptr = ((KeyEntry *)data) + 1;
-    keyptr = gt->gt_keys;
-    gt->gt_keymin = MAX_KEYINDEX;
-    gt->gt_keymax = 0;
-    for (index=1; index<=count; index++,entptr++)
-    {
-        if (!ReadKey(gt, &tempData, entptr, ++keyptr))
-            goto failure;
-			
-        /* Set up the index (start at 1, since 0=unset) */
-        gt->gt_keyindex[entptr->ent_key] = index;		
-    }
-
-    if( tempData.tk_asciiParams != NULL )
-        _GTIFFree( tempData.tk_asciiParams );
-	
-    return gt;
-	
-  failure:
-    /* Notify of error */
-    GTIFFree (gt);
-    return (GTIF *)0;
-}
-
-/**********************************************************************
- *
- *                        Private Routines
- *
- **********************************************************************/
-
-/*
- * Given KeyEntry, read in the GeoKey value location and set up
- *  the Key structure, returning 0 if failure.
- */
-
-static int ReadKey(GTIF* gt, TempKeyData* tempData,
-                   KeyEntry* entptr, GeoKey* keyptr)
-{
-    int offset,count;
-	
-    keyptr->gk_key = entptr->ent_key;
-    keyptr->gk_count = entptr->ent_count;
-    count = entptr->ent_count;
-    offset = entptr->ent_val_offset;
-    if (gt->gt_keymin > keyptr->gk_key)  gt->gt_keymin=keyptr->gk_key;
-    if (gt->gt_keymax < keyptr->gk_key)  gt->gt_keymax=keyptr->gk_key;
-	
-    if (entptr->ent_location)
-        keyptr->gk_type = (gt->gt_methods.type)(gt->gt_tif,entptr->ent_location);
-    else
-        keyptr->gk_type = (gt->gt_methods.type)(gt->gt_tif,GTIFF_GEOKEYDIRECTORY);
-	  
-    switch (entptr->ent_location)
-    {
-        case GTIFF_LOCAL:
-            /* store value into data value */
-            *(pinfo_t *)(&keyptr->gk_data) = entptr->ent_val_offset;
-            break;
-        case GTIFF_GEOKEYDIRECTORY:
-            keyptr->gk_data = (char *)(gt->gt_short+offset);
-            if (gt->gt_nshorts < offset+count)
-                gt->gt_nshorts = offset+count;
-            break;
-        case GTIFF_DOUBLEPARAMS:
-            keyptr->gk_data = (char *)(gt->gt_double+offset);
-            if (gt->gt_ndoubles < offset+count)
-                gt->gt_ndoubles = offset+count;
-            break;
-        case GTIFF_ASCIIPARAMS:
-            if( offset + count == tempData->tk_asciiParamsLength + 1 
-                && count > 0 )
-            {
-                /* some vendors seem to feel they should not use the 
-                   terminating '|' char, but do include a terminating '\0'
-                   which we lose in the low level reading code.  
-                   If this is the case, drop the extra character */
-                count--;
-            }
-            else if (offset < tempData->tk_asciiParamsLength
-                     && offset + count > tempData->tk_asciiParamsLength )
-            {
-                count = tempData->tk_asciiParamsLength - offset;
-                /* issue warning... if we could */
-            }
-            else if (offset + count > tempData->tk_asciiParamsLength)
-                return (0);
-
-            keyptr->gk_data = (char *) _GTIFcalloc (MAX(1,count+1));
-            _GTIFmemcpy (keyptr->gk_data,
-                         tempData->tk_asciiParams + offset, count);
-            if( keyptr->gk_data[MAX(0,count-1)] == '|' )
-                keyptr->gk_data[MAX(0,count-1)] = '\0';
-            else
-                keyptr->gk_data[MAX(0,count)] = '\0';
-            break;
-        default:
-            return 0; /* failure */
-    }
-    keyptr->gk_size = _gtiff_size[keyptr->gk_type];
-	
-    return 1; /* success */
-}
diff --git a/Utilities/otbgeotiff/geo_normalize.c b/Utilities/otbgeotiff/geo_normalize.c
deleted file mode 100644
index 214ae79c9a105e55432650f7b47986ceb05e31c7..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_normalize.c
+++ /dev/null
@@ -1,2468 +0,0 @@
-/******************************************************************************
- * $Id: geo_normalize.c,v 1.50 2007/07/28 13:55:21 fwarmerdam Exp $
- *
- * Project:  libgeotiff
- * Purpose:  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.
- ******************************************************************************
- *
- * $Log: geo_normalize.c,v $
- * Revision 1.50  2007/07/28 13:55:21  fwarmerdam
- * Fix name for GCS_WGS_72 per gdal bug #1715.
- *
- * Revision 1.49  2007/07/20 18:10:41  fwarmerdam
- * Pre-search pcs.override.csv and gcs.override.csv.
- *
- * Revision 1.48  2007/06/06 02:17:04  fwarmerdam
- * added builtin known values for foot and us survey foot
- *
- * Revision 1.47  2007/03/13 18:04:33  fwarmerdam
- * added new zealand map grid support per bug 1519
- *
- * Revision 1.46  2006/04/11 19:25:06  fwarmerdam
- * Be careful about falling back to gdal_datum.csv as it can interfere
- * with incode datum.csv support.
- *
- * Revision 1.45  2005/03/15 16:01:18  fwarmerdam
- * zero inv flattening interpreted as sphere
- *
- * Revision 1.44  2005/03/04 04:32:37  fwarmerdam
- * added cylindricalequalarea support
- *
- * Revision 1.43  2005/03/04 04:02:40  fwarmerdam
- * Fixed initialization of dfStdParallel2 for AEA and EC.
- *
- * Revision 1.42  2005/02/17 01:21:38  fwarmerdam
- * fixed handling of ProjFalseOrigin{Easting,Northing}GeoKey
- *
- * Revision 1.41  2004/12/01 22:06:42  fwarmerdam
- * bug 698: GTIFGetGCSInfo should not fail on missing pm if pm info not req.
- *
- * Revision 1.40  2004/07/09 17:27:37  warmerda
- * Added 9122 as an alias for simple degrees.
- *
- * Revision 1.39  2004/06/07 12:57:13  warmerda
- * fallback to using gdal_datum.csv if datum.csv not found
- *
- * Revision 1.38  2004/03/19 12:20:40  dron
- * Initialize projection parameters in GTIFFetchProjParms() before using.
- *
- * Revision 1.37  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.36  2003/01/28 18:31:58  warmerda
- * Default dfInDegrees in GTIFAngleToDD().
- *
- * Revision 1.35  2003/01/15 04:39:16  warmerda
- * Added GTIFDeaccessCSV
- *
- * Revision 1.34  2003/01/15 03:37:40  warmerda
- * added GTIFFreeMemory()
- *
- * Revision 1.33  2002/12/05 19:21:01  warmerda
- * fixed dfInDegrees to actually be in degrees, not radians!
- *
- * Revision 1.32  2002/11/30 16:01:11  warmerda
- * fixed some problems in GTIFGetUOMAngleInfo
- *
- * Revision 1.31  2002/11/30 15:44:35  warmerda
- * fixed GetCTParms EPSG code mappings
- *
- * Revision 1.30  2002/11/28 22:27:42  warmerda
- * preliminary upgrade to EPSG 6.2.2 tables
- *
- * Revision 1.29  2002/06/19 03:51:15  warmerda
- * migrated cpl_csv.h into cpl_serv.h
- *
- * Revision 1.28  2002/01/03 21:28:25  warmerda
- * call CSVDeaccess(NULL) at end of GTIFPrintDefn()
- *
- * Revision 1.27  2001/04/17 13:41:10  warmerda
- * fix memory leaks in GTIFPrintDefn()
- *
- * Revision 1.26  2001/04/17 13:23:07  warmerda
- * added support for reading custom ellipsoid definitions
- *
- * Revision 1.25  2001/03/05 04:55:26  warmerda
- * CVSDeaccess at end of GTIFGetDefn to avoid file leak
- *
- * Revision 1.24  2001/03/05 03:26:29  warmerda
- * fixed memory leaks in GTIFPrintDefn()
- *
- * Revision 1.23  2001/02/23 13:49:48  warmerda
- * Fixed GTIFPrintDefn() to use fprintf( fp ), instead of printf().
- *
- * Revision 1.22  2000/10/13 14:30:57  warmerda
- * fixed LCC parm order when parameters read directly from geotiff file
- *
- * Revision 1.21  2000/09/15 19:30:14  warmerda
- * report units of linear proj parms
- *
- * Revision 1.20  2000/09/15 18:21:07  warmerda
- * Fixed order of parameters for LCC 2SP.  When parameters
- * were read from EPSG CSV files the standard parallels and origin
- * were mixed up.  This affects alot of state plane zones!
- *
- * Revision 1.19  2000/06/09 14:05:43  warmerda
- * added default knowledge of NAD27/NAD83/WGS72/WGS84
- *
- * Revision 1.18  1999/12/10 21:28:12  warmerda
- * fixed Stereographic to look for ProjCenterLat/Long
- *
- * Revision 1.17  1999/12/10 20:06:58  warmerda
- * fixed up scale geokey used for a couple of projections
- *
- * Revision 1.16  1999/12/10 19:50:21  warmerda
- * Added EquidistantConic support, fixed return of StdParallel2GeoKey for
- * LCC2, and Albers.
- *
- * Revision 1.15  1999/12/10 19:39:26  warmerda
- * Fixed bug setting the false northing for files with
- * ProjCenterNorthingGeoKey set in GTIFGetDefn().
- *
- * Revision 1.14  1999/09/17 14:58:37  warmerda
- * Added ProjRectifiedGridAngleGeoKey(3096) and support for it's
- * use with Oblique Mercator in geo_normalize.c.
- *
- * Revision 1.13  1999/09/17 00:55:26  warmerda
- * added GTIFGetUOMAngleInfo(), and UOMAngle in GTIFDefn
- *
- * Revision 1.12  1999/09/15 18:51:31  warmerda
- * Map 9808 to TM South Oriented, not TM Modified Alaska.
- *
- * Revision 1.11  1999/09/15 16:44:06  warmerda
- * Change meter to metre to match EPSG database in GTIFGetUOMLengthInfo()
- * shortcut.
- *
- * Revision 1.10  1999/09/15 16:35:15  warmerda
- * Fixed the fractions of second handling properly in GTIFAngleStringToDD().
- *
- * Revision 1.9  1999/09/15 14:24:17  warmerda
- * Fixed serious bug in geo_normalize.c with translation of
- * DD.MMSSsss values.  Return value was seriously off if any
- * fraction of a second was included in the string.
- *
- * Revision 1.8  1999/07/13 03:12:52  warmerda
- * Make scale a parameter of CT_Stereographic.
- *
- * Revision 1.7  1999/05/04 03:13:22  warmerda
- * fixed a serious bug in parsing DMSmmss.sss values, and a bug in forming DMS strings
- *
- * Revision 1.6  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.5  1999/04/28 20:04:51  warmerda
- * Added doxygen style documentation.
- * Use GTIFPCSToMapSys() and related functions to partially normalize
- * projections when we don't have the CSV files.
- *
- * Revision 1.4  1999/03/18 21:34:59  geotiff
- * added GTIFDecToDMS
- *
- * Revision 1.3  1999/03/17 19:53:15  geotiff
- * sys includes moved to cpl_serv.h
- *
- * Revision 1.2  1999/03/10 18:24:06  geotiff
- * corrected to use int'
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- * Revision 1.4  1999/03/03 02:29:38  warmerda
- * Define PI if not already defined.
- *
- * Revision 1.3  1999/03/02 21:10:57  warmerda
- * added lots of projections
- *
- * Revision 1.2  1999/02/24 16:24:15  warmerda
- * Continuing to evolve
- *
- * Revision 1.1  1999/02/22 18:51:08  warmerda
- * New
- *
- */
- 
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-#include "geovalues.h"
-#include "geo_normalize.h"
-
-#ifndef KvUserDefined
-#  define KvUserDefined 32767
-#endif
-
-#ifndef PI
-#  define PI 3.14159265358979323846
-#endif
-
-/* EPSG Codes for projection parameters.  Unfortunately, these bear no
-   relationship to the GeoTIFF codes even though the names are so similar. */
-
-#define EPSGNatOriginLat         8801
-#define EPSGNatOriginLong        8802
-#define EPSGNatOriginScaleFactor 8805
-#define EPSGFalseEasting         8806
-#define EPSGFalseNorthing        8807
-#define EPSGProjCenterLat        8811
-#define EPSGProjCenterLong       8812
-#define EPSGAzimuth              8813
-#define EPSGAngleRectifiedToSkewedGrid 8814
-#define EPSGInitialLineScaleFactor 8815
-#define EPSGProjCenterEasting    8816
-#define EPSGProjCenterNorthing   8817
-#define EPSGPseudoStdParallelLat 8818
-#define EPSGPseudoStdParallelScaleFactor 8819
-#define EPSGFalseOriginLat       8821
-#define EPSGFalseOriginLong      8822
-#define EPSGStdParallel1Lat      8823
-#define EPSGStdParallel2Lat      8824
-#define EPSGFalseOriginEasting   8826
-#define EPSGFalseOriginNorthing  8827
-#define EPSGSphericalOriginLat   8828
-#define EPSGSphericalOriginLong  8829
-#define EPSGInitialLongitude     8830
-#define EPSGZoneWidth            8831
-
-/************************************************************************/
-/*                           GTIFGetPCSInfo()                           */
-/************************************************************************/
-
-int GTIFGetPCSInfo( int nPCSCode, char **ppszEPSGName, 
-                    short *pnProjOp, short *pnUOMLengthCode, 
-                    short *pnGeogCS )
-
-{
-    char	**papszRecord;
-    char	szSearchKey[24];
-    const char	*pszFilename;
-
-/* -------------------------------------------------------------------- */
-/*      Search the pcs.override table for this PCS.                     */
-/* -------------------------------------------------------------------- */
-    pszFilename = CSVFilename( "pcs.override.csv" );
-    sprintf( szSearchKey, "%d", nPCSCode );
-    papszRecord = CSVScanFileByName( pszFilename, "COORD_REF_SYS_CODE",
-                                     szSearchKey, CC_Integer );
-
-/* -------------------------------------------------------------------- */
-/*      If not found, search the EPSG PCS database.                     */
-/* -------------------------------------------------------------------- */
-    if( papszRecord == NULL )
-    {
-        pszFilename = CSVFilename( "pcs.csv" );
-        
-        sprintf( szSearchKey, "%d", nPCSCode );
-        papszRecord = CSVScanFileByName( pszFilename, "COORD_REF_SYS_CODE",
-                                         szSearchKey, CC_Integer );
-
-        if( papszRecord == NULL )
-            return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszEPSGName != NULL )
-    {
-        *ppszEPSGName =
-            CPLStrdup( CSLGetField( papszRecord,
-                                    CSVGetFileFieldId(pszFilename,
-                                                      "COORD_REF_SYS_NAME") ));
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the UOM Length code, if requested.                          */
-/* -------------------------------------------------------------------- */
-    if( pnUOMLengthCode != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"UOM_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnUOMLengthCode = (short) atoi(pszValue);
-        else
-            *pnUOMLengthCode = KvUserDefined;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the UOM Length code, if requested.                          */
-/* -------------------------------------------------------------------- */
-    if( pnProjOp != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"COORD_OP_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnProjOp = (short) atoi(pszValue);
-        else
-            *pnUOMLengthCode = KvUserDefined;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the GeogCS (Datum with PM) code, if requested.		*/
-/* -------------------------------------------------------------------- */
-    if( pnGeogCS != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"SOURCE_GEOGCRS_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnGeogCS = (short) atoi(pszValue);
-        else
-            *pnGeogCS = KvUserDefined;
-    }
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                           GTIFAngleToDD()                            */
-/*                                                                      */
-/*      Convert a numeric angle to decimal degress.                     */
-/************************************************************************/
-
-double GTIFAngleToDD( double dfAngle, int nUOMAngle )
-
-{
-    if( nUOMAngle == 9110 )		/* DDD.MMSSsss */
-    {
-        char	szAngleString[32];
-
-        sprintf( szAngleString, "%12.7f", dfAngle );
-        dfAngle = GTIFAngleStringToDD( szAngleString, nUOMAngle );
-    }
-    else
-    {
-        double		dfInDegrees = 1.0;
-        
-        GTIFGetUOMAngleInfo( nUOMAngle, NULL, &dfInDegrees );
-        dfAngle = dfAngle * dfInDegrees;
-    }
-
-    return( dfAngle );
-}
-
-/************************************************************************/
-/*                        GTIFAngleStringToDD()                         */
-/*                                                                      */
-/*      Convert an angle in the specified units to decimal degrees.     */
-/************************************************************************/
-
-double GTIFAngleStringToDD( const char * pszAngle, int nUOMAngle )
-
-{
-    double	dfAngle;
-    
-    if( nUOMAngle == 9110 )		/* DDD.MMSSsss */
-    {
-        char	*pszDecimal;
-        
-        dfAngle = ABS(atoi(pszAngle));
-        pszDecimal = strchr(pszAngle,'.');
-        if( pszDecimal != NULL && strlen(pszDecimal) > 1 )
-        {
-            char	szMinutes[3];
-            char	szSeconds[64];
-
-            szMinutes[0] = pszDecimal[1];
-            if( pszDecimal[2] >= '0' && pszDecimal[2] <= '9' )
-                szMinutes[1] = pszDecimal[2];
-            else
-                szMinutes[1] = '0';
-            
-            szMinutes[2] = '\0';
-            dfAngle += atoi(szMinutes) / 60.0;
-
-            if( strlen(pszDecimal) > 3 )
-            {
-                szSeconds[0] = pszDecimal[3];
-                if( pszDecimal[4] >= '0' && pszDecimal[4] <= '9' )
-                {
-                    szSeconds[1] = pszDecimal[4];
-                    szSeconds[2] = '.';
-                    strcpy( szSeconds+3, pszDecimal + 5 );
-                }
-                else
-                {
-                    szSeconds[1] = '0';
-                    szSeconds[2] = '\0';
-                }
-                dfAngle += atof(szSeconds) / 3600.0;
-            }
-        }
-
-        if( pszAngle[0] == '-' )
-            dfAngle *= -1;
-    }
-    else if( nUOMAngle == 9105 || nUOMAngle == 9106 )	/* grad */
-    {
-        dfAngle = 180 * (atof(pszAngle ) / 200);
-    }
-    else if( nUOMAngle == 9101 )			/* radians */
-    {
-        dfAngle = 180 * (atof(pszAngle ) / PI);
-    }
-    else if( nUOMAngle == 9103 )			/* arc-minute */
-    {
-        dfAngle = atof(pszAngle) / 60;
-    }
-    else if( nUOMAngle == 9104 )			/* arc-second */
-    {
-        dfAngle = atof(pszAngle) / 3600;
-    }
-    else /* decimal degrees ... some cases missing but seeminly never used */
-    {
-        CPLAssert( nUOMAngle == 9102 || nUOMAngle == KvUserDefined
-                   || nUOMAngle == 0 );
-        
-        dfAngle = atof(pszAngle );
-    }
-
-    return( dfAngle );
-}
-
-/************************************************************************/
-/*                           GTIFGetGCSInfo()                           */
-/*                                                                      */
-/*      Fetch the datum, and prime meridian related to a particular     */
-/*      GCS.                                                            */
-/************************************************************************/
-
-int GTIFGetGCSInfo( int nGCSCode, char ** ppszName,
-                    short * pnDatum, short * pnPM, short *pnUOMAngle )
-
-{
-    char	szSearchKey[24];
-    int		nDatum, nPM, nUOMAngle;
-    const char *pszFilename;
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    pszFilename = CSVFilename("gcs.override.csv");
-    sprintf( szSearchKey, "%d", nGCSCode );
-    nDatum = atoi(CSVGetField( pszFilename,
-                               "COORD_REF_SYS_CODE", szSearchKey, 
-                               CC_Integer, "DATUM_CODE" ) );
-
-    if( nDatum < 1 )
-    {
-        pszFilename = CSVFilename("gcs.csv");
-        sprintf( szSearchKey, "%d", nGCSCode );
-        nDatum = atoi(CSVGetField( pszFilename,
-                                   "COORD_REF_SYS_CODE", szSearchKey, 
-                                   CC_Integer, "DATUM_CODE" ) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle some "well known" GCS codes directly if the table        */
-/*      wasn't found.                                                   */
-/* -------------------------------------------------------------------- */
-    if( nDatum < 1 )
-    {
-        const char * pszName = NULL;
-        nPM = PM_Greenwich;
-        nUOMAngle = Angular_DMS_Hemisphere; 
-        if( nGCSCode == GCS_NAD27 )
-        {
-            nDatum = Datum_North_American_Datum_1927;
-            pszName = "NAD27";
-        }
-        else if( nGCSCode == GCS_NAD83 )
-        {
-            nDatum = Datum_North_American_Datum_1983;
-            pszName = "NAD83";
-        }
-        else if( nGCSCode == GCS_WGS_84 )
-        {
-            nDatum = Datum_WGS84;
-            pszName = "WGS 84";
-        }
-        else if( nGCSCode == GCS_WGS_72 )
-        {
-            nDatum = Datum_WGS72;
-            pszName = "WGS 72";
-        }
-        else
-            return FALSE;
-
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-        if( pnDatum != NULL )
-            *pnDatum = (short) nDatum;
-        if( pnPM != NULL )
-            *pnPM = (short) nPM;
-        if( pnUOMAngle != NULL )
-            *pnUOMAngle = (short) nUOMAngle;
-
-        return TRUE;
-    }
-
-    if( pnDatum != NULL )
-        *pnDatum = (short) nDatum;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the PM.                                                     */
-/* -------------------------------------------------------------------- */
-    if( pnPM != NULL )
-    {
-        nPM = atoi(CSVGetField( pszFilename,
-                                "COORD_REF_SYS_CODE", szSearchKey, CC_Integer,
-                                "PRIME_MERIDIAN_CODE" ) );
-
-        if( nPM < 1 )
-            return FALSE;
-
-        *pnPM = (short) nPM;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the angular units.                                          */
-/* -------------------------------------------------------------------- */
-    nUOMAngle = atoi(CSVGetField( pszFilename,
-                                  "COORD_REF_SYS_CODE",szSearchKey, CC_Integer,
-                                  "UOM_CODE" ) );
-
-    if( nUOMAngle < 1 )
-        return FALSE;
-
-    if( pnUOMAngle != NULL )
-        *pnUOMAngle = (short) nUOMAngle;
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( pszFilename,
-                                   "COORD_REF_SYS_CODE",szSearchKey,CC_Integer,
-                                   "COORD_REF_SYS_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                        GTIFGetEllipsoidInfo()                        */
-/*                                                                      */
-/*      Fetch info about an ellipsoid.  Axes are always returned in     */
-/*      meters.  SemiMajor computed based on inverse flattening         */
-/*      where that is provided.                                         */
-/************************************************************************/
-
-int GTIFGetEllipsoidInfo( int nEllipseCode, char ** ppszName,
-                          double * pdfSemiMajor, double * pdfSemiMinor )
-
-{
-    char	szSearchKey[24];
-    double	dfSemiMajor, dfToMeters = 1.0;
-    int		nUOMLength;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the semi major axis.                                        */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nEllipseCode );
-
-    dfSemiMajor =
-        atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                          "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                          "SEMI_MAJOR_AXIS" ) );
-
-/* -------------------------------------------------------------------- */
-/*      Try some well known ellipsoids.                                 */
-/* -------------------------------------------------------------------- */
-    if( dfSemiMajor == 0.0 )
-    {
-        double     dfInvFlattening, dfSemiMinor;
-        const char *pszName = NULL;
-        
-        if( nEllipseCode == Ellipse_Clarke_1866 )
-        {
-            pszName = "Clarke 1866";
-            dfSemiMajor = 6378206.4;
-            dfSemiMinor = 6356583.8;
-            dfInvFlattening = 0.0;
-        }
-        else if( nEllipseCode == Ellipse_GRS_1980 )
-        {
-            pszName = "GRS 1980";
-            dfSemiMajor = 6378137.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.257222101;
-        }
-        else if( nEllipseCode == Ellipse_WGS_84 )
-        {
-            pszName = "WGS 84";
-            dfSemiMajor = 6378137.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.257223563;
-        }
-        else if( nEllipseCode == 7043 )
-        {
-            pszName = "WGS 72";
-            dfSemiMajor = 6378135.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.26;
-        }
-        else
-            return FALSE;
-
-        if( dfSemiMinor == 0.0 )
-            dfSemiMinor = dfSemiMajor * (1 - 1.0/dfInvFlattening);
-
-        if( pdfSemiMinor != NULL )
-            *pdfSemiMinor = dfSemiMinor;
-        if( pdfSemiMajor != NULL )
-            *pdfSemiMajor = dfSemiMajor;
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*	Get the translation factor into meters.				*/
-/* -------------------------------------------------------------------- */
-    nUOMLength = atoi(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                   "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                   "UOM_CODE" ));
-    GTIFGetUOMLengthInfo( nUOMLength, NULL, &dfToMeters );
-
-    dfSemiMajor *= dfToMeters;
-    
-    if( pdfSemiMajor != NULL )
-        *pdfSemiMajor = dfSemiMajor;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the semi-minor if requested.  If the Semi-minor axis        */
-/*      isn't available, compute it based on the inverse flattening.    */
-/* -------------------------------------------------------------------- */
-    if( pdfSemiMinor != NULL )
-    {
-        *pdfSemiMinor =
-            atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                              "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                              "SEMI_MINOR_AXIS" )) * dfToMeters;
-
-        if( *pdfSemiMinor == 0.0 )
-        {
-            double	dfInvFlattening;
-            
-            dfInvFlattening = 
-                atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                  "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                  "INV_FLATTENING" ));
-            *pdfSemiMinor = dfSemiMajor * (1 - 1.0/dfInvFlattening);
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                   "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                   "ELLIPSOID_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                           GTIFGetPMInfo()                            */
-/*                                                                      */
-/*      Get the offset between a given prime meridian and Greenwich     */
-/*      in degrees.                                                     */
-/************************************************************************/
-
-int GTIFGetPMInfo( int nPMCode, char ** ppszName, double *pdfOffset )
-
-{
-    char	szSearchKey[24];
-    int		nUOMAngle;
-    const char *pszFilename = CSVFilename("prime_meridian.csv");
-
-/* -------------------------------------------------------------------- */
-/*      Use a special short cut for Greenwich, since it is so common.   */
-/* -------------------------------------------------------------------- */
-    if( nPMCode == PM_Greenwich )
-    {
-        if( pdfOffset != NULL )
-            *pdfOffset = 0.0;
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( "Greenwich" );
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nPMCode );
-
-    nUOMAngle =
-        atoi(CSVGetField( pszFilename, 
-                          "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                          "UOM_CODE" ) );
-    if( nUOMAngle < 1 )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Get the PM offset.                                              */
-/* -------------------------------------------------------------------- */
-    if( pdfOffset != NULL )
-    {
-        *pdfOffset =
-            GTIFAngleStringToDD(
-                CSVGetField( pszFilename, 
-                             "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                             "GREENWICH_LONGITUDE" ),
-                nUOMAngle );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(
-                CSVGetField( pszFilename, 
-                             "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                             "PRIME_MERIDIAN_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                          GTIFGetDatumInfo()                          */
-/*                                                                      */
-/*      Fetch the ellipsoid, and name for a datum.                      */
-/************************************************************************/
-
-int GTIFGetDatumInfo( int nDatumCode, char ** ppszName, short * pnEllipsoid )
-
-{
-    char	szSearchKey[24];
-    int		nEllipsoid;
-    const char *pszFilename = CSVFilename( "datum.csv" );
-    FILE       *fp;
-
-/* -------------------------------------------------------------------- */
-/*      If we can't find datum.csv then gdal_datum.csv is an            */
-/*      acceptable fallback.  Mostly this is for GDAL.                  */
-/* -------------------------------------------------------------------- */
-    if( (fp = VSIFOpen(pszFilename,"r")) == NULL )
-    {
-        if( (fp = VSIFOpen(CSVFilename("gdal_datum.csv"), "r")) != NULL )
-        {
-            pszFilename = CSVFilename( "gdal_datum.csv" );
-            VSIFClose( fp );
-        }        
-    }
-    else
-        VSIFClose( fp );
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nDatumCode );
-
-    nEllipsoid = atoi(CSVGetField( pszFilename,
-                                   "DATUM_CODE", szSearchKey, CC_Integer,
-                                   "ELLIPSOID_CODE" ) );
-
-    if( pnEllipsoid != NULL )
-        *pnEllipsoid = (short) nEllipsoid;
-    
-/* -------------------------------------------------------------------- */
-/*      Handle a few built-in datums.                                   */
-/* -------------------------------------------------------------------- */
-    if( nEllipsoid < 1 )
-    {
-        const char *pszName = NULL;
-        
-        if( nDatumCode == Datum_North_American_Datum_1927 )
-        {
-            nEllipsoid = Ellipse_Clarke_1866;
-            pszName = "North American Datum 1927";
-        }
-        else if( nDatumCode == Datum_North_American_Datum_1983 )
-        {
-            nEllipsoid = Ellipse_GRS_1980;
-            pszName = "North American Datum 1983";
-        }
-        else if( nDatumCode == Datum_WGS84 )
-        {
-            nEllipsoid = Ellipse_WGS_84;
-            pszName = "World Geodetic System 1984";
-        }
-        else if( nDatumCode == Datum_WGS72 )
-        {
-            nEllipsoid = 7043; /* WGS7 */
-            pszName = "World Geodetic System 1972";
-        }
-        else
-            return FALSE;
-
-        if( pnEllipsoid != NULL )
-            *pnEllipsoid = (short) nEllipsoid;
-
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( pszFilename,
-                                   "DATUM_CODE", szSearchKey, CC_Integer,
-                                   "DATUM_NAME" ));
-    
-    return( TRUE );
-}
-
-
-/************************************************************************/
-/*                        GTIFGetUOMLengthInfo()                        */
-/*                                                                      */
-/*      Note: This function should eventually also know how to          */
-/*      lookup length aliases in the UOM_LE_ALIAS table.                */
-/************************************************************************/
-
-int GTIFGetUOMLengthInfo( int nUOMLengthCode,
-                          char **ppszUOMName,
-                          double * pdfInMeters )
-
-{
-    char	**papszUnitsRecord;
-    char	szSearchKey[24];
-    int		iNameField;
-    const char *pszFilename;
-
-/* -------------------------------------------------------------------- */
-/*      We short cut meter to save work and avoid failure for missing   */
-/*      in the most common cases.       				*/
-/* -------------------------------------------------------------------- */
-    if( nUOMLengthCode == 9001 )
-    {
-        if( ppszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( "metre" );
-        if( pdfInMeters != NULL )
-            *pdfInMeters = 1.0;
-
-        return TRUE;
-    }
-
-    if( nUOMLengthCode == 9002 )
-    {
-        if( ppszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( "foot" );
-        if( pdfInMeters != NULL )
-            *pdfInMeters = 0.3048;
-
-        return TRUE;
-    }
-
-    if( nUOMLengthCode == 9003 )
-    {
-        if( ppszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( "US survey foot" );
-        if( pdfInMeters != NULL )
-            *pdfInMeters = 12.0 / 39.37;
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Search the units database for this unit.  If we don't find      */
-/*      it return failure.                                              */
-/* -------------------------------------------------------------------- */
-    pszFilename = CSVFilename( "unit_of_measure.csv" );
-
-    sprintf( szSearchKey, "%d", nUOMLengthCode );
-    papszUnitsRecord =
-        CSVScanFileByName( pszFilename,
-                           "UOM_CODE", szSearchKey, CC_Integer );
-
-    if( papszUnitsRecord == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszUOMName != NULL )
-    {
-        iNameField = CSVGetFileFieldId( pszFilename,
-                                        "UNIT_OF_MEAS_NAME" );
-        *ppszUOMName = CPLStrdup( CSLGetField(papszUnitsRecord, iNameField) );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the A and B factor fields, and create the multiplicative    */
-/*      factor.                                                         */
-/* -------------------------------------------------------------------- */
-    if( pdfInMeters != NULL )
-    {
-        int	iBFactorField, iCFactorField;
-        
-        iBFactorField = CSVGetFileFieldId( pszFilename, "FACTOR_B" );
-        iCFactorField = CSVGetFileFieldId( pszFilename, "FACTOR_C" );
-
-        if( atof(CSLGetField(papszUnitsRecord, iCFactorField)) > 0.0 )
-            *pdfInMeters = atof(CSLGetField(papszUnitsRecord, iBFactorField))
-                / atof(CSLGetField(papszUnitsRecord, iCFactorField));
-        else
-            *pdfInMeters = 0.0;
-    }
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                        GTIFGetUOMAngleInfo()                         */
-/************************************************************************/
-
-int GTIFGetUOMAngleInfo( int nUOMAngleCode,
-                         char **ppszUOMName,
-                         double * pdfInDegrees )
-
-{
-    const char	*pszUOMName = NULL;
-    double	dfInDegrees = 1.0;
-    const char *pszFilename = CSVFilename( "unit_of_measure.csv" );
-    char	szSearchKey[24];
-
-    sprintf( szSearchKey, "%d", nUOMAngleCode );
-    pszUOMName = CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "UNIT_OF_MEAS_NAME" );
-
-/* -------------------------------------------------------------------- */
-/*      If the file is found, read from there.  Note that FactorC is    */
-/*      an empty field for any of the DMS style formats, and in this    */
-/*      case we really want to return the default InDegrees value       */
-/*      (1.0) from above.                                               */
-/* -------------------------------------------------------------------- */
-    if( pszUOMName != NULL )
-    {
-        double dfFactorB, dfFactorC, dfInRadians;
-        
-        dfFactorB = 
-            atof(CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "FACTOR_B" ));
-        
-        dfFactorC = 
-            atof(CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "FACTOR_C" ));
-
-        if( dfFactorC != 0.0 )
-        {
-            dfInRadians = (dfFactorB / dfFactorC);
-            dfInDegrees = dfInRadians * 180.0 / PI;
-        }
-                          
-
-        /* We do a special override of some of the DMS formats name */
-        if( nUOMAngleCode == 9102 || nUOMAngleCode == 9107
-            || nUOMAngleCode == 9108 || nUOMAngleCode == 9110
-            || nUOMAngleCode == 9122 )
-        {
-            dfInDegrees = 1.0;
-            pszUOMName = "degree";
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Otherwise handle a few well known units directly.               */
-/* -------------------------------------------------------------------- */
-    else
-    {
-        switch( nUOMAngleCode )
-        {
-          case 9101:
-            pszUOMName = "radian";
-            dfInDegrees = 180.0 / PI;
-            break;
-        
-          case 9102:
-          case 9107:
-          case 9108:
-          case 9110:
-            pszUOMName = "degree";
-            dfInDegrees = 1.0;
-            break;
-
-          case 9103:
-            pszUOMName = "arc-minute";
-            dfInDegrees = 1 / 60.0;
-            break;
-
-          case 9104:
-            pszUOMName = "arc-second";
-            dfInDegrees = 1 / 3600.0;
-            break;
-        
-          case 9105:
-            pszUOMName = "grad";
-            dfInDegrees = 180.0 / 200.0;
-            break;
-
-          case 9106:
-            pszUOMName = "gon";
-            dfInDegrees = 180.0 / 200.0;
-            break;
-        
-          case 9109:
-            pszUOMName = "microradian";
-            dfInDegrees = 180.0 / (PI * 1000000.0);
-            break;
-
-          default:
-            return FALSE;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Return to caller.                                               */
-/* -------------------------------------------------------------------- */
-    if( ppszUOMName != NULL )
-    {
-        if( pszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( pszUOMName );
-        else
-            *ppszUOMName = NULL;
-    }
-
-    if( pdfInDegrees != NULL )
-        *pdfInDegrees = dfInDegrees;
-
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                    EPSGProjMethodToCTProjMethod()                    */
-/*                                                                      */
-/*      Convert between the EPSG enumeration for projection methods,    */
-/*      and the GeoTIFF CT codes.                                       */
-/************************************************************************/
-
-static int EPSGProjMethodToCTProjMethod( int nEPSG )
-
-{
-    /* see trf_method.csv for list of EPSG codes */
-    
-    switch( nEPSG )
-    {
-      case 9801:
-        return( CT_LambertConfConic_1SP );
-
-      case 9802:
-        return( CT_LambertConfConic_2SP );
-
-      case 9803:
-        return( CT_LambertConfConic_2SP ); /* Belgian variant not supported */
-
-      case 9804:
-        return( CT_Mercator );  /* 1SP and 2SP not differentiated */
-
-      case 9805:
-        return( CT_Mercator );  /* 1SP and 2SP not differentiated */
-
-      case 9806:
-        return( CT_CassiniSoldner );
-
-      case 9807:
-        return( CT_TransverseMercator );
-
-      case 9808:
-        return( CT_TransvMercator_SouthOriented );
-
-      case 9809:
-        return( CT_ObliqueStereographic );
-
-      case 9810:
-        return( CT_PolarStereographic );
-
-      case 9811:
-        return( CT_NewZealandMapGrid );
-
-      case 9812:
-        return( CT_ObliqueMercator ); /* is hotine actually different? */
-
-      case 9813:
-        return( CT_ObliqueMercator_Laborde );
-
-      case 9814:
-        return( CT_ObliqueMercator_Rosenmund ); /* swiss  */
-
-      case 9815:
-        return( CT_ObliqueMercator );
-
-      case 9816: /* tunesia mining grid has no counterpart */
-        return( KvUserDefined );
-    }
-
-    return( KvUserDefined );
-}
-
-/************************************************************************/
-/*                            SetGTParmIds()                            */
-/*                                                                      */
-/*      This is hardcoded logic to set the GeoTIFF parmaeter            */
-/*      identifiers for all the EPSG supported projections.  As the     */
-/*      trf_method.csv table grows with new projections, this code      */
-/*      will need to be updated.                                        */
-/************************************************************************/
-
-static int SetGTParmIds( int nCTProjection, 
-                         int *panProjParmId, 
-                         int *panEPSGCodes )
-
-{
-    int anWorkingDummy[7];
-
-    if( panEPSGCodes == NULL )
-        panEPSGCodes = anWorkingDummy;
-    if( panProjParmId == NULL )
-        panProjParmId = anWorkingDummy;
-
-    memset( panEPSGCodes, 0, sizeof(int) * 7 );
-
-    /* psDefn->nParms = 7; */
-    
-    switch( nCTProjection )
-    {
-      case CT_CassiniSoldner:
-      case CT_NewZealandMapGrid:
-        panProjParmId[0] = ProjNatOriginLatGeoKey;
-        panProjParmId[1] = ProjNatOriginLongGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGNatOriginLat;
-        panEPSGCodes[1] = EPSGNatOriginLong;
-        panEPSGCodes[5] = EPSGFalseEasting;
-        panEPSGCodes[6] = EPSGFalseNorthing;
-        return TRUE;
-
-      case CT_ObliqueMercator:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[2] = ProjAzimuthAngleGeoKey;
-        panProjParmId[3] = ProjRectifiedGridAngleGeoKey;
-        panProjParmId[4] = ProjScaleAtCenterGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGProjCenterLat;
-        panEPSGCodes[1] = EPSGProjCenterLong;
-        panEPSGCodes[2] = EPSGAzimuth;
-        panEPSGCodes[3] = EPSGAngleRectifiedToSkewedGrid;
-        panEPSGCodes[4] = EPSGInitialLineScaleFactor;
-        panEPSGCodes[5] = EPSGProjCenterEasting;
-        panEPSGCodes[6] = EPSGProjCenterNorthing;
-        return TRUE;
-
-      case CT_ObliqueMercator_Laborde:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[2] = ProjAzimuthAngleGeoKey;
-        panProjParmId[4] = ProjScaleAtCenterGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGProjCenterLat;
-        panEPSGCodes[1] = EPSGProjCenterLong;
-        panEPSGCodes[2] = EPSGAzimuth;
-        panEPSGCodes[4] = EPSGInitialLineScaleFactor;
-        panEPSGCodes[5] = EPSGProjCenterEasting;
-        panEPSGCodes[6] = EPSGProjCenterNorthing;
-        return TRUE;
-        
-      case CT_LambertConfConic_1SP:
-      case CT_Mercator:
-      case CT_ObliqueStereographic:
-      case CT_PolarStereographic:
-      case CT_TransverseMercator:
-      case CT_TransvMercator_SouthOriented:
-        panProjParmId[0] = ProjNatOriginLatGeoKey;
-        panProjParmId[1] = ProjNatOriginLongGeoKey;
-        panProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGNatOriginLat;
-        panEPSGCodes[1] = EPSGNatOriginLong;
-        panEPSGCodes[4] = EPSGNatOriginScaleFactor;
-        panEPSGCodes[5] = EPSGFalseEasting;
-        panEPSGCodes[6] = EPSGFalseNorthing;
-        return TRUE;
-
-      case CT_LambertConfConic_2SP:
-        panProjParmId[0] = ProjFalseOriginLatGeoKey;
-        panProjParmId[1] = ProjFalseOriginLongGeoKey;
-        panProjParmId[2] = ProjStdParallel1GeoKey;
-        panProjParmId[3] = ProjStdParallel2GeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGFalseOriginLat;
-        panEPSGCodes[1] = EPSGFalseOriginLong;
-        panEPSGCodes[2] = EPSGStdParallel1Lat;
-        panEPSGCodes[3] = EPSGStdParallel2Lat;
-        panEPSGCodes[5] = EPSGFalseOriginEasting;
-        panEPSGCodes[6] = EPSGFalseOriginNorthing;
-        return TRUE;
-
-      case CT_SwissObliqueCylindrical:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        /* EPSG codes? */
-        return TRUE;
-
-      default:
-        return( FALSE );
-    }
-}
-
-/************************************************************************/
-/*                         GTIFGetProjTRFInfo()                         */
-/*                                                                      */
-/*      Transform a PROJECTION_TRF_CODE into a projection method,       */
-/*      and a set of parameters.  The parameters identify will          */
-/*      depend on the returned method, but they will all have been      */
-/*      normalized into degrees and meters.                             */
-/************************************************************************/
-
-int GTIFGetProjTRFInfo( /* COORD_OP_CODE from coordinate_operation.csv */
-                        int nProjTRFCode, 
-                        char **ppszProjTRFName,
-                        short * pnProjMethod,
-                        double * padfProjParms )
-
-{
-    int		nProjMethod, i, anEPSGCodes[7];
-    double	adfProjParms[7];
-    char	szTRFCode[16];
-    int         nCTProjMethod;
-    char       *pszFilename = CPLStrdup(CSVFilename("projop_wparm.csv"));
-
-/* -------------------------------------------------------------------- */
-/*      Get the proj method.  If this fails to return a meaningful      */
-/*      number, then the whole function fails.                          */
-/* -------------------------------------------------------------------- */
-    sprintf( szTRFCode, "%d", nProjTRFCode );
-    nProjMethod =
-        atoi( CSVGetField( pszFilename,
-                           "COORD_OP_CODE", szTRFCode, CC_Integer,
-                           "COORD_OP_METHOD_CODE" ) );
-    if( nProjMethod == 0 )
-    {
-        CPLFree( pszFilename );
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Initialize a definition of what EPSG codes need to be loaded    */
-/*      into what fields in adfProjParms.                               */
-/* -------------------------------------------------------------------- */
-    nCTProjMethod = EPSGProjMethodToCTProjMethod( nProjMethod );
-    SetGTParmIds( nCTProjMethod, NULL, anEPSGCodes );
-
-/* -------------------------------------------------------------------- */
-/*      Get the parameters for this projection.  For the time being     */
-/*      I am assuming the first four parameters are angles, the         */
-/*      fifth is unitless (normally scale), and the remainder are       */
-/*      linear measures.  This works fine for the existing              */
-/*      projections, but is a pretty fragile approach.                  */
-/* -------------------------------------------------------------------- */
-
-    for( i = 0; i < 7; i++ )
-    {
-        char    szParamUOMID[32], szParamValueID[32], szParamCodeID[32];
-        const char *pszValue;
-        int     nUOM;
-        int     nEPSGCode = anEPSGCodes[i];
-        int     iEPSG;
-
-        /* Establish default */
-        if( nEPSGCode == EPSGAngleRectifiedToSkewedGrid )
-            adfProjParms[i] = 90.0;
-        else if( nEPSGCode == EPSGNatOriginScaleFactor
-                 || nEPSGCode == EPSGInitialLineScaleFactor
-                 || nEPSGCode == EPSGPseudoStdParallelScaleFactor )
-            adfProjParms[i] = 1.0;
-        else
-            adfProjParms[i] = 0.0;
-
-        /* If there is no parameter, skip */
-        if( nEPSGCode == 0 )
-            continue;
-
-        /* Find the matching parameter */
-        for( iEPSG = 0; iEPSG < 7; iEPSG++ )
-        {
-            sprintf( szParamCodeID, "PARAMETER_CODE_%d", iEPSG+1 );
-
-            if( atoi(CSVGetField( pszFilename,
-                                  "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                  szParamCodeID )) == nEPSGCode )
-                break;
-        }
-
-        /* not found, accept the default */
-        if( iEPSG == 7 )
-            continue;
-
-        /* Get the value, and UOM */
-        sprintf( szParamUOMID, "PARAMETER_UOM_%d", iEPSG+1 );
-        sprintf( szParamValueID, "PARAMETER_VALUE_%d", iEPSG+1 );
-
-        nUOM = atoi(CSVGetField( pszFilename,
-                                 "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                 szParamUOMID ));
-        pszValue = CSVGetField( pszFilename,
-                                "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                szParamValueID );
-
-        /* Transform according to the UOM */
-        if( nUOM >= 9100 && nUOM < 9200 )
-            adfProjParms[i] = GTIFAngleStringToDD( pszValue, nUOM );
-        else if( nUOM > 9000 && nUOM < 9100 )
-        {
-            double dfInMeters;
-
-            if( !GTIFGetUOMLengthInfo( nUOM, NULL, &dfInMeters ) )
-                dfInMeters = 1.0;
-            adfProjParms[i] = atof(pszValue) * dfInMeters;
-        }
-        else
-            adfProjParms[i] = atof(pszValue);
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszProjTRFName != NULL )
-    {
-        *ppszProjTRFName =
-            CPLStrdup(CSVGetField( pszFilename,
-                                   "COORD_OP_CODE", szTRFCode, CC_Integer,
-                                   "COORD_OP_NAME" ));
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transfer requested data into passed variables.                  */
-/* -------------------------------------------------------------------- */
-    if( pnProjMethod != NULL )
-        *pnProjMethod = (short) nProjMethod;
-
-    if( padfProjParms != NULL )
-    {
-        for( i = 0; i < 7; i++ )
-            padfProjParms[i] = adfProjParms[i];
-    }
-
-    CPLFree( pszFilename );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                         GTIFFetchProjParms()                         */
-/*                                                                      */
-/*      Fetch the projection parameters for a particular projection     */
-/*      from a GeoTIFF file, and fill the GTIFDefn structure out        */
-/*      with them.                                                      */
-/************************************************************************/
-
-static void GTIFFetchProjParms( GTIF * psGTIF, GTIFDefn * psDefn )
-
-{
-    double dfNatOriginLong = 0.0, dfNatOriginLat = 0.0, dfRectGridAngle = 0.0;
-    double dfFalseEasting = 0.0, dfFalseNorthing = 0.0, dfNatOriginScale = 1.0;
-    double dfStdParallel1 = 0.0, dfStdParallel2 = 0.0, dfAzimuth = 0.0;
-
-/* -------------------------------------------------------------------- */
-/*      Get the false easting, and northing if available.               */
-/* -------------------------------------------------------------------- */
-    if( !GTIFKeyGet(psGTIF, ProjFalseEastingGeoKey, &dfFalseEasting, 0, 1)
-        && !GTIFKeyGet(psGTIF, ProjCenterEastingGeoKey,
-                       &dfFalseEasting, 0, 1) 
-        && !GTIFKeyGet(psGTIF, ProjFalseOriginEastingGeoKey,
-                       &dfFalseEasting, 0, 1) )
-        dfFalseEasting = 0.0;
-        
-    if( !GTIFKeyGet(psGTIF, ProjFalseNorthingGeoKey, &dfFalseNorthing,0,1)
-        && !GTIFKeyGet(psGTIF, ProjCenterNorthingGeoKey,
-                       &dfFalseNorthing, 0, 1)
-        && !GTIFKeyGet(psGTIF, ProjFalseOriginNorthingGeoKey,
-                       &dfFalseNorthing, 0, 1) )
-        dfFalseNorthing = 0.0;
-        
-    switch( psDefn->CTProjection )
-    {
-/* -------------------------------------------------------------------- */
-      case CT_Stereographic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_LambertConfConic_1SP:
-      case CT_Mercator:
-      case CT_ObliqueStereographic:
-      case CT_TransverseMercator:
-      case CT_TransvMercator_SouthOriented:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_ObliqueMercator: /* hotine */
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjAzimuthAngleGeoKey, 
-                       &dfAzimuth, 0, 1 ) == 0 )
-            dfAzimuth = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjRectifiedGridAngleGeoKey,
-                       &dfRectGridAngle, 0, 1 ) == 0 )
-            dfRectGridAngle = 90.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[2] = dfAzimuth;
-        psDefn->ProjParmId[2] = ProjAzimuthAngleGeoKey;
-        psDefn->ProjParm[3] = dfRectGridAngle;
-        psDefn->ProjParmId[3] = ProjRectifiedGridAngleGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtCenterGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_CassiniSoldner:
-      case CT_Polyconic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_AzimuthalEquidistant:
-      case CT_MillerCylindrical:
-      case CT_Equirectangular:
-      case CT_Gnomonic:
-      case CT_LambertAzimEqualArea:
-      case CT_Orthographic:
-      case CT_NewZealandMapGrid:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_Robinson:
-      case CT_Sinusoidal:
-      case CT_VanDerGrinten:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_PolarStereographic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStraightVertPoleLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjStraightVertPoleLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_LambertConfConic_2SP:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey, 
-                       &dfStdParallel2, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjFalseOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjFalseOriginLongGeoKey;
-        psDefn->ProjParm[2] = dfStdParallel1;
-        psDefn->ProjParmId[2] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[3] = dfStdParallel2;
-        psDefn->ProjParmId[3] = ProjStdParallel2GeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_AlbersEqualArea:
-      case CT_EquidistantConic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey, 
-                       &dfStdParallel2, 0, 1 ) == 0 )
-            dfStdParallel2 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfStdParallel1;
-        psDefn->ProjParmId[0] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[1] = dfStdParallel2;
-        psDefn->ProjParmId[1] = ProjStdParallel2GeoKey;
-        psDefn->ProjParm[2] = dfNatOriginLat;
-        psDefn->ProjParmId[2] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[3] = dfNatOriginLong;
-        psDefn->ProjParmId[3] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_CylindricalEqualArea:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfStdParallel1;
-        psDefn->ProjParmId[0] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-    }
-}
-
-/************************************************************************/
-/*                            GTIFGetDefn()                             */
-/************************************************************************/
-
-/**
-@param psGTIF GeoTIFF information handle as returned by GTIFNew.
-@param psDefn Pointer to an existing GTIFDefn structure.  This structure
-does not need to have been pre-initialized at all.
-
-@return TRUE if the function has been successful, otherwise FALSE.
-
-This function reads the coordinate system definition from a GeoTIFF file,
-and <i>normalizes</i> it into a set of component information using 
-definitions from CSV (Comma Seperated Value ASCII) files derived from 
-EPSG tables.  This function is intended to simplify correct support for
-reading files with defined PCS (Projected Coordinate System) codes that
-wouldn't otherwise be directly known by application software by reducing
-it to the underlying projection method, parameters, datum, ellipsoid, 
-prime meridian and units.<p>
-
-The application should pass a pointer to an existing uninitialized 
-GTIFDefn structure, and GTIFGetDefn() will fill it in.  The fuction 
-currently always returns TRUE but in the future will return FALSE if 
-CSV files are not found.  In any event, all geokeys actually found in the
-file will be copied into the GTIFDefn.  However, if the CSV files aren't
-found codes implied by other codes will not be set properly.<p>
-
-GTIFGetDefn() will not generally work if the EPSG derived CSV files cannot
-be found.  By default a modest attempt will be made to find them, but 
-in general it is necessary for the calling application to override the
-logic to find them.  This can be done by calling the 
-SetCSVFilenameHook() function to
-override the search method based on application knowledge of where they are
-found.<p>
-
-The normalization methodology operates by fetching tags from the GeoTIFF
-file, and then setting all other tags implied by them in the structure.  The
-implied relationships are worked out by reading definitions from the 
-various EPSG derived CSV tables.<p>
-
-For instance, if a PCS (ProjectedCSTypeGeoKey) is found in the GeoTIFF file
-this code is used to lookup a record in the <tt>horiz_cs.csv</tt> CSV
-file.  For example given the PCS 26746 we can find the name
-(NAD27 / California zone VI), the GCS 4257 (NAD27), and the ProjectionCode
-10406 (California CS27 zone VI).  The GCS, and ProjectionCode can in turn
-be looked up in other tables until all the details of units, ellipsoid, 
-prime meridian, datum, projection (LambertConfConic_2SP) and projection
-parameters are established.  A full listgeo dump of a file 
-for this result might look like the following, all based on a single PCS
-value:<p>
-
-<pre>
-% listgeo -norm ~/data/geotiff/pci_eg/spaf27.tif
-Geotiff_Information:
-   Version: 1
-   Key_Revision: 1.0
-   Tagged_Information:
-      ModelTiepointTag (2,3):
-         0                0                0                
-         1577139.71       634349.176       0                
-      ModelPixelScaleTag (1,3):
-         195.509321       198.32184        0                
-      End_Of_Tags.
-   Keyed_Information:
-      GTModelTypeGeoKey (Short,1): ModelTypeProjected
-      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
-      ProjectedCSTypeGeoKey (Short,1): PCS_NAD27_California_VI
-      End_Of_Keys.
-   End_Of_Geotiff.
-
-PCS = 26746 (NAD27 / California zone VI)
-Projection = 10406 (California CS27 zone VI)
-Projection Method: CT_LambertConfConic_2SP
-   ProjStdParallel1GeoKey: 33.883333
-   ProjStdParallel2GeoKey: 32.766667
-   ProjFalseOriginLatGeoKey: 32.166667
-   ProjFalseOriginLongGeoKey: -116.233333
-   ProjFalseEastingGeoKey: 609601.219202
-   ProjFalseNorthingGeoKey: 0.000000
-GCS: 4267/NAD27
-Datum: 6267/North American Datum 1927
-Ellipsoid: 7008/Clarke 1866 (6378206.40,6356583.80)
-Prime Meridian: 8901/Greenwich (0.000000)
-Projection Linear Units: 9003/US survey foot (0.304801m)
-</pre>
-
-Note that GTIFGetDefn() does not inspect or return the tiepoints and scale.
-This must be handled seperately as it normally would.  It is intended to
-simplify capture and normalization of the coordinate system definition.  
-Note that GTIFGetDefn() also does the following things:
-
-<ol>
-<li> Convert all angular values to decimal degrees.
-<li> Convert all linear values to meters. 
-<li> Return the linear units and conversion to meters for the tiepoints and
-scale (though the tiepoints and scale remain in their native units). 
-<li> When reading projection parameters a variety of differences between
-different GeoTIFF generators are handled, and a normalized set of parameters
-for each projection are always returned.
-</ol>
-
-Code fields in the GTIFDefn are filled with KvUserDefined if there is not
-value to assign.  The parameter lists for each of the underlying projection
-transform methods can be found at the
-<a href="http://www.remotesensing.org/geotiff/proj_list">Projections</a>
-page.  Note that nParms will be set based on the maximum parameter used.
-Some of the parameters may not be used in which case the
-GTIFDefn::ProjParmId[] will
-be zero.  This is done to retain correspondence to the EPSG parameter
-numbering scheme.<p>
-
-The 
-<a href="http://www.remotesensing.org/cgi-bin/cvsweb.cgi/~checkout~/osrs/geotiff/libgeotiff/geotiff_proj4.c">geotiff_proj4.c</a> module distributed with libgeotiff can 
-be used as an example of code that converts a GTIFDefn into another projection
-system.<p>
-
-@see GTIFKeySet(), SetCSVFilenameHook()
-
-*/
-
-int GTIFGetDefn( GTIF * psGTIF, GTIFDefn * psDefn )
-
-{
-    int		i;
-    short	nGeogUOMLinear;
-    double	dfInvFlattening;
-    
-/* -------------------------------------------------------------------- */
-/*      Initially we default all the information we can.                */
-/* -------------------------------------------------------------------- */
-    psDefn->Model = KvUserDefined;
-    psDefn->PCS = KvUserDefined;
-    psDefn->GCS = KvUserDefined;
-    psDefn->UOMLength = KvUserDefined;
-    psDefn->UOMLengthInMeters = 1.0;
-    psDefn->UOMAngle = KvUserDefined;
-    psDefn->UOMAngleInDegrees = 1.0;
-    psDefn->Datum = KvUserDefined;
-    psDefn->Ellipsoid = KvUserDefined;
-    psDefn->SemiMajor = 0.0;
-    psDefn->SemiMinor = 0.0;
-    psDefn->PM = KvUserDefined;
-    psDefn->PMLongToGreenwich = 0.0;
-
-    psDefn->ProjCode = KvUserDefined;
-    psDefn->Projection = KvUserDefined;
-    psDefn->CTProjection = KvUserDefined;
-
-    psDefn->nParms = 0;
-    for( i = 0; i < MAX_GTIF_PROJPARMS; i++ )
-    {
-        psDefn->ProjParm[i] = 0.0;
-        psDefn->ProjParmId[i] = 0;
-    }
-
-    psDefn->MapSys = KvUserDefined;
-    psDefn->Zone = 0;
-
-/* -------------------------------------------------------------------- */
-/*	Try to get the overall model type.				*/
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF,GTModelTypeGeoKey,&(psDefn->Model),0,1);
-
-/* -------------------------------------------------------------------- */
-/*	Extract the Geog units.  					*/
-/* -------------------------------------------------------------------- */
-    nGeogUOMLinear = 9001; /* Linear_Meter */
-    GTIFKeyGet(psGTIF, GeogLinearUnitsGeoKey, &nGeogUOMLinear, 0, 1 );
-
-/* -------------------------------------------------------------------- */
-/*      Try to get a PCS.                                               */
-/* -------------------------------------------------------------------- */
-    if( GTIFKeyGet(psGTIF,ProjectedCSTypeGeoKey, &(psDefn->PCS),0,1) == 1
-        && psDefn->PCS != KvUserDefined )
-    {
-        /*
-         * Translate this into useful information.
-         */
-        GTIFGetPCSInfo( psDefn->PCS, NULL, &(psDefn->ProjCode),
-                        &(psDefn->UOMLength), &(psDefn->GCS) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*       If we have the PCS code, but didn't find it in the CSV files   */
-/*      (likely because we can't find them) we will try some ``jiffy    */
-/*      rules'' for UTM and state plane.                                */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PCS != KvUserDefined && psDefn->ProjCode == KvUserDefined )
-    {
-        int	nMapSys, nZone;
-        int	nGCS = psDefn->GCS;
-
-        nMapSys = GTIFPCSToMapSys( psDefn->PCS, &nGCS, &nZone );
-        if( nMapSys != KvUserDefined )
-        {
-            psDefn->ProjCode = (short) GTIFMapSysToProj( nMapSys, nZone );
-            psDefn->GCS = (short) nGCS;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      If the Proj_ code is specified directly, use that.              */
-/* -------------------------------------------------------------------- */
-    if( psDefn->ProjCode == KvUserDefined )
-        GTIFKeyGet(psGTIF, ProjectionGeoKey, &(psDefn->ProjCode), 0, 1 );
-    
-    if( psDefn->ProjCode != KvUserDefined )
-    {
-        /*
-         * We have an underlying projection transformation value.  Look
-         * this up.  For a PCS of ``WGS 84 / UTM 11'' the transformation
-         * would be Transverse Mercator, with a particular set of options.
-         * The nProjTRFCode itself would correspond to the name
-         * ``UTM zone 11N'', and doesn't include datum info.
-         */
-        GTIFGetProjTRFInfo( psDefn->ProjCode, NULL, &(psDefn->Projection),
-                            psDefn->ProjParm );
-        
-        /*
-         * Set the GeoTIFF identity of the parameters.
-         */
-        psDefn->CTProjection = (short) 
-            EPSGProjMethodToCTProjMethod( psDefn->Projection );
-
-        SetGTParmIds( psDefn->CTProjection, psDefn->ProjParmId, NULL);
-        psDefn->nParms = 7;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to get a GCS.  If found, it will override any implied by    */
-/*      the PCS.                                                        */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeographicTypeGeoKey, &(psDefn->GCS), 0, 1 );
-
-/* -------------------------------------------------------------------- */
-/*      Derive the datum, and prime meridian from the GCS.              */
-/* -------------------------------------------------------------------- */
-    if( psDefn->GCS != KvUserDefined )
-    {
-        GTIFGetGCSInfo( psDefn->GCS, NULL, &(psDefn->Datum), &(psDefn->PM),
-                        &(psDefn->UOMAngle) );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Handle the GCS angular units.  GeogAngularUnitsGeoKey           */
-/*      overrides the GCS or PCS setting.                               */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogAngularUnitsGeoKey, &(psDefn->UOMAngle), 0, 1 );
-    if( psDefn->UOMAngle != KvUserDefined )
-    {
-        GTIFGetUOMAngleInfo( psDefn->UOMAngle, NULL,
-                             &(psDefn->UOMAngleInDegrees) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for a datum setting, and then use the datum to derive     */
-/*      an ellipsoid.                                                   */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogGeodeticDatumGeoKey, &(psDefn->Datum), 0, 1 );
-
-    if( psDefn->Datum != KvUserDefined )
-    {
-        GTIFGetDatumInfo( psDefn->Datum, NULL, &(psDefn->Ellipsoid) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for an explicit ellipsoid.  Use the ellipsoid to          */
-/*      derive the ellipsoid characteristics, if possible.              */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogEllipsoidGeoKey, &(psDefn->Ellipsoid), 0, 1 );
-
-    if( psDefn->Ellipsoid != KvUserDefined )
-    {
-        GTIFGetEllipsoidInfo( psDefn->Ellipsoid, NULL,
-                              &(psDefn->SemiMajor), &(psDefn->SemiMinor) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for overridden ellipsoid parameters.  It would be nice    */
-/*      to warn if they conflict with provided information, but for     */
-/*      now we just override.                                           */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogSemiMajorAxisGeoKey, &(psDefn->SemiMajor), 0, 1 );
-    GTIFKeyGet(psGTIF, GeogSemiMinorAxisGeoKey, &(psDefn->SemiMinor), 0, 1 );
-    
-    if( GTIFKeyGet(psGTIF, GeogInvFlatteningGeoKey, &dfInvFlattening, 
-                   0, 1 ) == 1 )
-    {
-        if( dfInvFlattening != 0.0 )
-            psDefn->SemiMinor = 
-                psDefn->SemiMajor * (1 - 1.0/dfInvFlattening);
-        else
-            psDefn->SemiMinor = psDefn->SemiMajor;
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the prime meridian info.                                    */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogPrimeMeridianGeoKey, &(psDefn->PM), 0, 1 );
-
-    if( psDefn->PM != KvUserDefined )
-    {
-        GTIFGetPMInfo( psDefn->PM, NULL, &(psDefn->PMLongToGreenwich) );
-    }
-    else
-    {
-        GTIFKeyGet(psGTIF, GeogPrimeMeridianLongGeoKey,
-                   &(psDefn->PMLongToGreenwich), 0, 1 );
-
-        psDefn->PMLongToGreenwich =
-            GTIFAngleToDD( psDefn->PMLongToGreenwich,
-                           psDefn->UOMAngle );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Have the projection units of measure been overridden?  We       */
-/*      should likely be doing something about angular units too,       */
-/*      but these are very rarely not decimal degrees for actual        */
-/*      file coordinates.                                               */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF,ProjLinearUnitsGeoKey,&(psDefn->UOMLength),0,1);
-
-    if( psDefn->UOMLength != KvUserDefined )
-    {
-        GTIFGetUOMLengthInfo( psDefn->UOMLength, NULL,
-                              &(psDefn->UOMLengthInMeters) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle a variety of user defined transform types.               */
-/* -------------------------------------------------------------------- */
-    if( GTIFKeyGet(psGTIF,ProjCoordTransGeoKey,
-                   &(psDefn->CTProjection),0,1) == 1)
-    {
-        GTIFFetchProjParms( psGTIF, psDefn );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to set the zoned map system information.                    */
-/* -------------------------------------------------------------------- */
-    psDefn->MapSys = GTIFProjToMapSys( psDefn->ProjCode, &(psDefn->Zone) );
-
-/* -------------------------------------------------------------------- */
-/*      If this is UTM, and we were unable to extract the projection    */
-/*      parameters from the CSV file, just set them directly now,       */
-/*      since it's pretty easy, and a common case.                      */
-/* -------------------------------------------------------------------- */
-    if( (psDefn->MapSys == MapSys_UTM_North
-         || psDefn->MapSys == MapSys_UTM_South)
-        && psDefn->CTProjection == KvUserDefined )
-    {
-        psDefn->CTProjection = CT_TransverseMercator;
-        psDefn->nParms = 7;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[0] = 0.0;
-            
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[1] = psDefn->Zone*6 - 183.0;
-        
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[4] = 0.9996;
-        
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[5] = 500000.0;
-        
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        if( psDefn->MapSys == MapSys_UTM_North )
-            psDefn->ProjParm[6] = 0.0;
-        else
-            psDefn->ProjParm[6] = 10000000.0;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      For now we forceable deaccess all CSV files to reduce the       */
-/*      chance of "leakage".  Really, this should be application        */
-/*      controlled.                                                     */
-/* -------------------------------------------------------------------- */
-    CSVDeaccess( NULL );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                            GTIFDecToDMS()                            */
-/*                                                                      */
-/*      Convenient function to translate decimal degrees to DMS         */
-/*      format for reporting to a user.                                 */
-/************************************************************************/
-
-const char *GTIFDecToDMS( double dfAngle, const char * pszAxis,
-                          int nPrecision )
-
-{
-    int		nDegrees, nMinutes;
-    double	dfSeconds;
-    char	szFormat[30];
-    static char szBuffer[50];
-    const char	*pszHemisphere = NULL;
-    double	dfRound;
-    int		i;
-
-    dfRound = 0.5/60;
-    for( i = 0; i < nPrecision; i++ )
-        dfRound = dfRound * 0.1;
-
-    nDegrees = (int) ABS(dfAngle);
-    nMinutes = (int) ((ABS(dfAngle) - nDegrees) * 60 + dfRound);
-    dfSeconds = ABS((ABS(dfAngle) * 3600 - nDegrees*3600 - nMinutes*60));
-
-    if( EQUAL(pszAxis,"Long") && dfAngle < 0.0 )
-        pszHemisphere = "W";
-    else if( EQUAL(pszAxis,"Long") )
-        pszHemisphere = "E";
-    else if( dfAngle < 0.0 )
-        pszHemisphere = "S";
-    else
-        pszHemisphere = "N";
-
-    sprintf( szFormat, "%%3dd%%2d\'%%%d.%df\"%s",
-             nPrecision+3, nPrecision, pszHemisphere );
-    sprintf( szBuffer, szFormat, nDegrees, nMinutes, dfSeconds );
-
-    return( szBuffer );
-}
-
-/************************************************************************/
-/*                           GTIFPrintDefn()                            */
-/*                                                                      */
-/*      Report the contents of a GTIFDefn structure ... mostly for      */
-/*      debugging.                                                      */
-/************************************************************************/
-
-void GTIFPrintDefn( GTIFDefn * psDefn, FILE * fp )
-
-{
-/* -------------------------------------------------------------------- */
-/*      Get the PCS name if possible.                                   */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PCS != KvUserDefined )
-    {
-        char	*pszPCSName = NULL;
-    
-        GTIFGetPCSInfo( psDefn->PCS, &pszPCSName, NULL, NULL, NULL );
-        if( pszPCSName == NULL )
-            pszPCSName = CPLStrdup("name unknown");
-        
-        fprintf( fp, "PCS = %d (%s)\n", psDefn->PCS, pszPCSName );
-        CPLFree( pszPCSName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*	Dump the projection code if possible.				*/
-/* -------------------------------------------------------------------- */
-    if( psDefn->ProjCode != KvUserDefined )
-    {
-        char	*pszTRFName = NULL;
-
-        GTIFGetProjTRFInfo( psDefn->ProjCode, &pszTRFName, NULL, NULL );
-        if( pszTRFName == NULL )
-            pszTRFName = CPLStrdup("");
-                
-        fprintf( fp, "Projection = %d (%s)\n",
-                 psDefn->ProjCode, pszTRFName );
-
-        CPLFree( pszTRFName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to dump the projection method name, and parameters if possible.*/
-/* -------------------------------------------------------------------- */
-    if( psDefn->CTProjection != KvUserDefined )
-    {
-        char	*pszName = GTIFValueName(ProjCoordTransGeoKey,
-                                         psDefn->CTProjection);
-        int     i;
-
-        if( pszName == NULL )
-            pszName = "(unknown)";
-            
-        fprintf( fp, "Projection Method: %s\n", pszName );
-
-        for( i = 0; i < psDefn->nParms; i++ )
-        {
-            if( psDefn->ProjParmId[i] == 0 )
-                continue;
-
-            pszName = GTIFKeyName((geokey_t) psDefn->ProjParmId[i]);
-            if( pszName == NULL )
-                pszName = "(unknown)";
-
-            if( i < 4 )
-            {
-                char	*pszAxisName;
-                
-                if( strstr(pszName,"Long") != NULL )
-                    pszAxisName = "Long";
-                else if( strstr(pszName,"Lat") != NULL )
-                    pszAxisName = "Lat";
-                else
-                    pszAxisName = "?";
-                
-                fprintf( fp, "   %s: %f (%s)\n",
-                         pszName, psDefn->ProjParm[i],
-                         GTIFDecToDMS( psDefn->ProjParm[i], pszAxisName, 2 ) );
-            }
-            else if( i == 4 )
-                fprintf( fp, "   %s: %f\n", pszName, psDefn->ProjParm[i] );
-            else
-                fprintf( fp, "   %s: %f m\n", pszName, psDefn->ProjParm[i] );
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the GCS name, and number.                                */
-/* -------------------------------------------------------------------- */
-    if( psDefn->GCS != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetGCSInfo( psDefn->GCS, &pszName, NULL, NULL, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "GCS: %d/%s\n", psDefn->GCS, pszName );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the datum name.                                          */
-/* -------------------------------------------------------------------- */
-    if( psDefn->Datum != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetDatumInfo( psDefn->Datum, &pszName, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Datum: %d/%s\n", psDefn->Datum, pszName );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the ellipsoid.                                           */
-/* -------------------------------------------------------------------- */
-    if( psDefn->Ellipsoid != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetEllipsoidInfo( psDefn->Ellipsoid, &pszName, NULL, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Ellipsoid: %d/%s (%.2f,%.2f)\n",
-                 psDefn->Ellipsoid, pszName,
-                 psDefn->SemiMajor, psDefn->SemiMinor );
-        CPLFree( pszName );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Report the prime meridian.                                      */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PM != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetPMInfo( psDefn->PM, &pszName, NULL );
-
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Prime Meridian: %d/%s (%f/%s)\n",
-                 psDefn->PM, pszName,
-                 psDefn->PMLongToGreenwich,
-                 GTIFDecToDMS( psDefn->PMLongToGreenwich, "Long", 2 ) );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the projection units of measure (currently just          */
-/*      linear).                                                        */
-/* -------------------------------------------------------------------- */
-    if( psDefn->UOMLength != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetUOMLengthInfo( psDefn->UOMLength, &pszName, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup( "(unknown)" );
-        
-        fprintf( fp, "Projection Linear Units: %d/%s (%fm)\n",
-                 psDefn->UOMLength, pszName, psDefn->UOMLengthInMeters );
-        CPLFree( pszName );
-    }
-
-    CSVDeaccess( NULL );
-}
-
-/************************************************************************/
-/*                           GTIFFreeMemory()                           */
-/*                                                                      */
-/*      Externally visible function to free memory allocated within     */
-/*      geo_normalize.c.                                                */
-/************************************************************************/
-
-void GTIFFreeMemory( char * pMemory )
-
-{
-    if( pMemory != NULL )
-        VSIFree( pMemory );
-}
-
-/************************************************************************/
-/*                          GTIFDeaccessCSV()                           */
-/*                                                                      */
-/*      Free all cached CSV info.                                       */
-/************************************************************************/
-
-void GTIFDeaccessCSV()
-
-{
-    CSVDeaccess( NULL );
-}
diff --git a/Utilities/otbgeotiff/geo_normalize.h b/Utilities/otbgeotiff/geo_normalize.h
deleted file mode 100644
index 900dc812cc2a79e41b48329788fd69d96e13de8f..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_normalize.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/******************************************************************************
- * $Id: geo_normalize.h,v 1.12 2005/08/26 16:08:14 fwarmerdam Exp $
- *
- * 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.
- ******************************************************************************
- *
- * $Log: geo_normalize.h,v $
- * Revision 1.12  2005/08/26 16:08:14  fwarmerdam
- * Include void in empty argument list for prototype.
- *
- * Revision 1.11  2004/02/03 17:19:50  warmerda
- * export GTIFAngleToDD() - used by GDAL mrsiddataset.cpp
- *
- * Revision 1.10  2003/01/15 04:39:16  warmerda
- * Added GTIFDeaccessCSV
- *
- * Revision 1.9  2003/01/15 03:37:40  warmerda
- * added GTIFFreeMemory()
- *
- * Revision 1.8  2002/11/28 22:27:42  warmerda
- * preliminary upgrade to EPSG 6.2.2 tables
- *
- * Revision 1.7  1999/09/17 00:55:26  warmerda
- * added GTIFGetUOMAngleInfo(), and UOMAngle in GTIFDefn
- *
- * Revision 1.6  1999/05/04 03:13:42  warmerda
- * Added prototype
- *
- * Revision 1.5  1999/04/29 23:02:55  warmerda
- * added docs, and MapSys related stuff
- *
- * Revision 1.4  1999/03/18 21:35:19  geotiff
- * Added PROJ.4 related stuff
- *
- * Revision 1.3  1999/03/17 20:44:04  geotiff
- * added CPL_DLL related support
- *
- * Revision 1.2  1999/03/10 18:24:06  geotiff
- * corrected to use int'
- *
- */
-
-#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.  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;
-
-    /** 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 vlaues 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;
-
-} GTIFDefn;
-
-int CPL_DLL GTIFGetPCSInfo( int nPCSCode, char **ppszEPSGName,
-                            short *pnProjOp, 
-                            short *pnUOMLengthCode, short *pnGeogCS );
-int CPL_DLL GTIFGetProjTRFInfo( int nProjTRFCode,
-                                char ** ppszProjTRFName,
-                                short * pnProjMethod,
-                                double * padfProjParms );
-int CPL_DLL GTIFGetGCSInfo( int nGCSCode, char **ppszName,
-                            short *pnDatum, short *pnPM, short *pnUOMAngle );
-int CPL_DLL GTIFGetDatumInfo( int nDatumCode, char **ppszName,
-                              short * pnEllipsoid );
-int CPL_DLL GTIFGetEllipsoidInfo( int nEllipsoid, char ** ppszName,
-                                  double * pdfSemiMajor,
-                                  double * pdfSemiMinor );
-int CPL_DLL GTIFGetPMInfo( int nPM, char **ppszName,
-                           double * pdfLongToGreenwich );
-
-double CPL_DLL GTIFAngleStringToDD( const char *pszAngle, int nUOMAngle );
-int CPL_DLL GTIFGetUOMLengthInfo( int nUOMLengthCode,
-                                  char **ppszUOMName,
-                                  double * pdfInMeters );
-int CPL_DLL GTIFGetUOMAngleInfo( int nUOMAngleCode,
-                                 char **ppszUOMName,
-                                 double * pdfInDegrees );
-double CPL_DLL GTIFAngleToDD( double dfAngle, int nUOMAngle );
-    
-
-/* this should be used to free strings returned by GTIFGet... funcs */
-void CPL_DLL GTIFFreeMemory( char * );
-void CPL_DLL GTIFDeaccessCSV( void );
-
-int CPL_DLL GTIFGetDefn( GTIF *psGTIF, GTIFDefn * psDefn );
-void CPL_DLL GTIFPrintDefn( GTIFDefn *, FILE * );
-void CPL_DLL GTIFFreeDefn( GTIF * );
-
-void CPL_DLL SetCSVFilenameHook( const char *(*CSVFileOverride)(const char *) );
-
-const char CPL_DLL *GTIFDecToDMS( double, const char *, int );
-
-/*
- * These are useful for recognising UTM and State Plane, with or without
- * CSV files being found.
- */
-
-#define MapSys_UTM_North	-9001
-#define MapSys_UTM_South	-9002
-#define MapSys_State_Plane_27	-9003
-#define MapSys_State_Plane_83	-9004
-
-int CPL_DLL   GTIFMapSysToPCS( int MapSys, int Datum, int nZone );
-int CPL_DLL   GTIFMapSysToProj( int MapSys, int nZone );
-int CPL_DLL   GTIFPCSToMapSys( int PCSCode, int * pDatum, int * pZone );
-int CPL_DLL   GTIFProjToMapSys( int ProjCode, int * pZone );
-
-/*
- * These are only useful if using libgeotiff with libproj (PROJ.4+).
- */
-char CPL_DLL *GTIFGetProj4Defn( GTIFDefn * );
-int  CPL_DLL  GTIFProj4ToLatLong( GTIFDefn *, int, double *, double * );
-int  CPL_DLL  GTIFProj4FromLatLong( GTIFDefn *, int, double *, double * );
-
-#if defined(HAVE_LIBPROJ) && defined(HAVE_PROJECTS_H)
-#  define HAVE_GTIFPROJ4
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-    
-#endif /* ndef GEO_NORMALIZE_H_INCLUDED */
diff --git a/Utilities/otbgeotiff/geo_print.c b/Utilities/otbgeotiff/geo_print.c
deleted file mode 100644
index 4b969432e0fb2bc97900054fbddc7cd082074f7f..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_print.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/**********************************************************************
- *
- *  geo_print.c  -- Key-dumping routines for GEOTIFF files.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *  Revision History;
- *
- *    20 June,  1995      Niles D. Ritter      New
- *     7 July,  1995      NDR                  Fix indexing
- *    27 July,  1995      NDR                  Added Import utils
- *    28 July,  1995      NDR                  Made parser more strict.
- *    29  Sep,  1995      NDR                  Fixed matrix printing.
- *
- * $Log: geo_print.c,v $
- * Revision 1.9  2004/10/19 14:24:09  fwarmerdam
- * dynamically allocate tag list so large lists work: Oliver Colin
- *
- * Revision 1.8  2004/04/27 21:31:31  warmerda
- * avoid crash if gt_tif is NULL
- *
- * Revision 1.7  2003/10/21 19:19:53  warmerda
- * fixed bug with large message texts sometimes causing a crash
- *
- * Revision 1.6  2003/09/23 18:27:30  warmerda
- * fixed bug with long datum names: bug 399
- *
- * Revision 1.5  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.4  2002/05/31 14:27:26  warmerda
- * added escaping in metadata for string key values
- *
- * Revision 1.3  1999/05/04 03:14:35  warmerda
- * avoid warnings
- *
- * Revision 1.2  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-#include "geokeys.h"
-
-#include <stdio.h>     /* for sprintf             */
-
-#define FMT_GEOTIFF "Geotiff_Information:"
-#define FMT_VERSION "Version: %hd"
-#define FMT_REV     "Key_Revision: %1hd.%hd"
-#define FMT_TAGS    "Tagged_Information:"
-#define FMT_TAGEND  "End_Of_Tags."
-#define FMT_KEYS    "Keyed_Information:"
-#define FMT_KEYEND  "End_Of_Keys."
-#define FMT_GEOEND  "End_Of_Geotiff."
-#define FMT_DOUBLE  "%-17.9g"
-#define FMT_SHORT   "%-11hd"
-
-static void DefaultPrint(char *string, void *aux);
-static void PrintKey(GeoKey *key, GTIFPrintMethod print,void *aux);
-static void PrintGeoTags(GTIF *gtif,GTIFReadMethod scan,void *aux);
-static void PrintTag(int tag, int nrows, double *data, int ncols, 
-					GTIFPrintMethod print,void *aux);
-static void DefaultRead(char *string, void *aux);
-static int  ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux);
-static int  ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux);
-
-/*
- * Print off the directory info, using whatever method is specified
- * (defaults to fprintf if null). The "aux" parameter is provided for user
- * defined method for passing parameters or whatever.
- *
- * The output format is a "GeoTIFF meta-data" file, which may be
- * used to import information with the GTIFFImport() routine.
- */
- 
-void GTIFPrint(GTIF *gtif, GTIFPrintMethod print,void *aux)
-{
-    int i;
-    int numkeys = gtif->gt_num_keys;
-    GeoKey *key = gtif->gt_keys;
-    char message[1024];
-	
-    if (!print) print = (GTIFPrintMethod) &DefaultPrint;
-    if (!aux) aux=stdout;	
-
-    sprintf(message,FMT_GEOTIFF "\n"); 
-    print(message,aux);
-    sprintf(message, "Version: %hd" ,gtif->gt_version);
-    sprintf(message, FMT_VERSION,gtif->gt_version);
-    print("   ",aux); print(message,aux); print("\n",aux);
-    sprintf(message, FMT_REV,gtif->gt_rev_major,
-            gtif->gt_rev_minor); 
-    print("   ",aux); print(message,aux); print("\n",aux);
-
-    sprintf(message,"   %s\n",FMT_TAGS); print(message,aux);
-    PrintGeoTags(gtif,print,aux);
-    sprintf(message,"      %s\n",FMT_TAGEND); print(message,aux);
-
-    sprintf(message,"   %s\n",FMT_KEYS); print(message,aux);
-    for (i=0; i<numkeys; i++)
-        PrintKey(++key,print,aux);
-    sprintf(message,"      %s\n",FMT_KEYEND); print(message,aux);
-
-    sprintf(message,"   %s\n",FMT_GEOEND); print(message,aux);
-}
-
-static void PrintGeoTags(GTIF *gt, GTIFPrintMethod print,void *aux)
-{
-	double *data;
-	int count;
-	tiff_t *tif=gt->gt_tif;
-
-        if( tif == NULL )
-            return;
-
-	if ((gt->gt_methods.get)(tif, GTIFF_TIEPOINTS, &count, &data ))
-		PrintTag(GTIFF_TIEPOINTS,count/3, data, 3, print, aux);
-	if ((gt->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &data ))
-		PrintTag(GTIFF_PIXELSCALE,count/3, data, 3, print, aux);
-	if ((gt->gt_methods.get)(tif, GTIFF_TRANSMATRIX, &count, &data ))
-		PrintTag(GTIFF_TRANSMATRIX,count/4, data, 4, print, aux);
-}
-
-static void PrintTag(int tag, int nrows, double *dptr, int ncols, 
-					GTIFPrintMethod print,void *aux)
-{
-	int i,j;
-	double *data=dptr;
-        char message[1024];
-
-	print("      ",aux);
-	print(GTIFTagName(tag),aux);
-	sprintf(message," (%d,%d):\n",nrows,ncols);
-	print(message,aux);
-	for (i=0;i<nrows;i++)
-	{
-		print("         ",aux);
-		for (j=0;j<ncols;j++)
-		{
-			sprintf(message,FMT_DOUBLE,*data++);
-			print(message,aux);
-		}
-		print("\n",aux);
-	}
-	_GTIFFree(dptr); /* free up the allocated memory */
-}
-
-
-static void PrintKey(GeoKey *key, GTIFPrintMethod print, void *aux)
-{
-    char *data;
-    geokey_t keyid = (geokey_t) key->gk_key;
-    int count = key->gk_count;
-    int vals_now,i;
-    pinfo_t *sptr;
-    double *dptr;
-    char message[40];
-
-    print("      ",aux);
-    print(GTIFKeyName(keyid),aux);
-	
-    sprintf(message," (%s,%d): ",GTIFTypeName(key->gk_type),count);
-    print(message,aux);
-	
-    if (key->gk_type==TYPE_SHORT && count==1)
-        data = (char *)&key->gk_data;
-    else
-        data = key->gk_data;
-		
-    switch (key->gk_type)
-    {
-      case TYPE_ASCII: 
-      {
-          int  in_char, out_char;
-
-          print("\"",aux);
-
-          in_char = 0;
-          out_char = 0;
-          while( in_char < count-1 )
-          {
-              char ch = ((char *) data)[in_char++];
-
-              if( ch == '\n' )
-              {
-                  message[out_char++] = '\\';
-                  message[out_char++] = 'n';
-              }
-              else if( ch == '\\' )
-              {
-                  message[out_char++] = '\\';
-                  message[out_char++] = '\\';
-              }
-              else
-                  message[out_char++] = ch;
-
-              /* flush message if buffer full */
-              if( out_char >= sizeof(message)-3 )
-              {
-                  message[out_char] = '\0';
-                  print(message,aux);
-                  out_char = 0;
-              }
-          }
-
-          message[out_char]='\0';
-          print(message,aux);
-
-          print("\"\n",aux);
-      }
-      break;
-        
-      case TYPE_DOUBLE: 
-        for (dptr = (double *)data; count > 0; count-= vals_now)
-        {
-            vals_now = count > 3? 3: count;
-            for (i=0; i<vals_now; i++,dptr++)
-            {
-                sprintf(message,FMT_DOUBLE ,*dptr);
-                print(message,aux);
-            }
-            print("\n",aux);
-        }
-        break;
-        
-      case TYPE_SHORT: 
-        sptr = (pinfo_t *)data;
-        if (count==1)
-        {
-            print( GTIFValueName(keyid,*sptr), aux );
-            print( "\n", aux );
-        }
-        else
-            for (; count > 0; count-= vals_now)
-            {
-                vals_now = count > 3? 3: count;
-                for (i=0; i<vals_now; i++,sptr++)
-                {
-                    sprintf(message,FMT_SHORT,*sptr);
-                    print(message,aux);
-                }
-                print("\n",aux);
-            }
-        break;
-        
-      default: 
-        sprintf(message, "Unknown Type (%d)\n",key->gk_type);
-        print(message,aux);
-        break;
-    }
-}
-
-static void DefaultPrint(char *string, void *aux)
-{
-    /* Pretty boring */
-    fprintf((FILE *)aux,string);
-}
-
-
-/*
- *  Importing metadata file
- */
-
-/*
- * Import the directory info, using whatever method is specified
- * (defaults to fscanf if null). The "aux" parameter is provided for user
- * defined method for passing file or whatever.
- *
- * The input format is a "GeoTIFF meta-data" file, which may be
- * generated by the GTIFFPrint() routine.
- */
- 
-int GTIFImport(GTIF *gtif, GTIFReadMethod scan,void *aux)
-{
-    int status;
-    char message[1024];
-	
-    if (!scan) scan = (GTIFReadMethod) &DefaultRead;
-    if (!aux) aux=stdin;	
-	
-    scan(message,aux);
-    if (strncmp(message,FMT_GEOTIFF,8)) return 0; 
-    scan(message,aux);
-    if (!sscanf(message,FMT_VERSION,&gtif->gt_version)) return 0;
-    scan(message,aux);
-    if (sscanf(message,FMT_REV,&gtif->gt_rev_major,
-               &gtif->gt_rev_minor) !=2) return 0;
-
-    scan(message,aux);
-    if (strncmp(message,FMT_TAGS,8)) return 0;
-    while ((status=ReadTag(gtif,scan,aux))>0);
-    if (status < 0) return 0;
-
-    scan(message,aux);
-    if (strncmp(message,FMT_KEYS,8)) return 0;
-    while ((status=ReadKey(gtif,scan,aux))>0);
-	
-    return (status==0); /* success */
-}
-
-static int StringError(char *string)
-{
-    fprintf(stderr,"Parsing Error at \'%s\'\n",string);
-    return -1;
-}
-
-#define SKIPWHITE(vptr) \
-  while (*vptr && (*vptr==' '||*vptr=='\t')) vptr++
-#define FINDCHAR(vptr,c) \
-  while (*vptr && *vptr!=(c)) vptr++
-
-static int ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux)
-{
-    int i,j,tag;
-    char *vptr;
-    char tagname[100];
-    double *data,*dptr;
-    int count,nrows,ncols,num;
-    char message[1024];
-
-    scan(message,aux);
-    if (!strncmp(message,FMT_TAGEND,8)) return 0;
-
-    num=sscanf(message,"%[^( ] (%d,%d):\n",tagname,&nrows,&ncols);
-    if (num!=3) return StringError(message);
-	
-    tag = GTIFTagCode(tagname);
-    if (tag < 0) return StringError(tagname);
-
-    count = nrows*ncols;
-
-    data = (double *) _GTIFcalloc(count * sizeof(double));
-    dptr = data;
-	
-    for (i=0;i<nrows;i++)
-    {
-        scan(message,aux);
-        vptr = message;
-        for (j=0;j<ncols;j++)
-        {
-            if (!sscanf(vptr,"%lg",dptr++))
-                return StringError(vptr);
-            FINDCHAR(vptr,' ');
-            SKIPWHITE(vptr);
-        }
-    }	
-    (gt->gt_methods.set)(gt->gt_tif, (pinfo_t) tag, count, data );	
-
-    _GTIFFree( data );
-
-    return 1;
-}
-
-
-static int ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux)
-{
-    tagtype_t ktype;
-    int count,outcount;
-    int vals_now,i;
-    geokey_t key;
-    int icode;
-    pinfo_t code;
-    short  *sptr;
-    char name[1000];
-    char type[20];
-    double data[100];
-    double *dptr;
-    char *vptr;
-    int num;
-    char message[2048];
-
-    scan(message,aux); 
-    if (!strncmp(message,FMT_KEYEND,8)) return 0;
-
-    num=sscanf(message,"%[^( ] (%[^,],%d):\n",name,type,&count);
-    if (num!=3) return StringError(message);
-
-    vptr = message;
-    FINDCHAR(vptr,':'); 
-    if (!*vptr) return StringError(message);
-    vptr+=2;
-
-    if( GTIFKeyCode(name) < 0 )
-        return StringError(name);
-    else
-        key = (geokey_t) GTIFKeyCode(name);
-
-    if( GTIFTypeCode(type) < 0 )
-        return StringError(type);
-    else
-        ktype = (tagtype_t) GTIFTypeCode(type);
-
-    /* skip white space */
-    SKIPWHITE(vptr);
-    if (!*vptr) return StringError(message);
-			
-    switch (ktype)
-    {
-      case TYPE_ASCII: 
-      {
-          char *cdata;
-          int out_char = 0;
-
-          FINDCHAR(vptr,'"');
-          if (!*vptr) return StringError(message);
-
-          cdata = (char *) _GTIFcalloc( count+1 );
-
-          vptr++;
-          while( out_char < count-1 )
-          {
-              if( *vptr == '\0' )
-                  break;
-
-              else if( vptr[0] == '\\' && vptr[1] == 'n' )
-              {
-                  cdata[out_char++] = '\n';
-                  vptr += 2;
-              }
-              else if( vptr[0] == '\\' && vptr[1] == '\\' )
-              {
-                  cdata[out_char++] = '\\';
-                  vptr += 2;
-              }
-              else
-                  cdata[out_char++] = *(vptr++);
-          }
-
-          if( out_char < count-1 ) return StringError(message);
-          if( *vptr != '"' ) return StringError(message);
-
-          cdata[count-1] = '\0';
-          GTIFKeySet(gt,key,ktype,count,cdata);
-
-          _GTIFFree( cdata );
-      }
-      break;
-        
-      case TYPE_DOUBLE: 
-        outcount = count;
-        for (dptr = data; count > 0; count-= vals_now)
-        {
-            vals_now = count > 3? 3: count;
-            for (i=0; i<vals_now; i++,dptr++)
-            {
-                if (!sscanf(vptr,"%lg" ,dptr))
-                    StringError(vptr);
-                FINDCHAR(vptr,' ');
-                SKIPWHITE(vptr);
-            }
-            if (vals_now<count)
-            {
-                scan(message,aux);
-                vptr = message;
-            }
-        }
-        if (outcount==1)
-            GTIFKeySet(gt,key,ktype,outcount,data[0]);
-        else
-            GTIFKeySet(gt,key,ktype,outcount,data);
-        break;
-        
-      case TYPE_SHORT: 
-        if (count==1)
-        {
-            icode = GTIFValueCode(key,vptr);
-            if (icode < 0) return StringError(vptr);
-            code = (pinfo_t) icode;
-            GTIFKeySet(gt,key,ktype,count,code);
-        }
-        else  /* multi-valued short - no such thing yet */
-        {
-            sptr = (short *)data;
-            outcount = count;
-            for (; count > 0; count-= vals_now)
-            {
-                vals_now = count > 3? 3: count;
-                for (i=0; i<vals_now; i++,sptr++)
-                {
-                    int		work_int;
-
-                    /* note: FMT_SHORT (%11hd) not supported on IRIX */
-                    sscanf(message,"%11d",&work_int);
-                    *sptr = (short) work_int;
-                    scan(message,aux);
-                }
-                if (vals_now<count)
-                {
-                    scan(message,aux);
-                    vptr = message;
-                }
-            }
-            GTIFKeySet(gt,key,ktype,outcount,sptr);			
-        }
-        break;
-        
-      default: 
-        return -1;
-    }
-    return 1;
-}
-
-
-static void DefaultRead(char *string, void *aux)
-{
-	/* Pretty boring */
-	fscanf((FILE *)aux,"%[^\n]\n",string);
-}
-
diff --git a/Utilities/otbgeotiff/geo_set.c b/Utilities/otbgeotiff/geo_set.c
deleted file mode 100644
index 48831796a9ae7c69e92a78d7e4223be5c8205918..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_set.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/**********************************************************************
- *
- *  geo_set.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- * $Log: geo_set.c,v $
- * Revision 1.11  2004/04/27 21:32:33  warmerda
- * reformat for clarity
- *
- * Revision 1.10  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.9  2003/01/15 03:37:19  warmerda
- * avoid warning
- *
- * Revision 1.8  2002/09/27 13:05:33  warmerda
- * allow dynamic set/delete of ASCII tags. ASCIIPARAMS now kept split
- *
- * Revision 1.7  2001/05/02 16:48:22  warmerda
- * fixed a couple bugs in delete code
- *
- * Revision 1.6  2001/05/02 13:54:34  warmerda
- * updated geo_set.c to support deleting tags
- *
- * Revision 1.5  1999/05/04 03:09:33  warmerda
- * avoid warnings
- *
- * Revision 1.4  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.3  1999/04/28 19:59:38  warmerda
- * added some doxygen style documentation
- *
- * Revision 1.2  1999/03/11 17:39:38  geotiff
- * Added fix for case where a key is being overwritten.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-#include <assert.h>
-
-/**
-This function writes a geokey_t value to a GeoTIFF file.
-
-@param gtif The geotiff information handle from GTIFNew().
-
-@param keyID The geokey_t name (such as ProjectedCSTypeGeoKey).
-This must come from the list of legal geokey_t values
-(an enumeration) listed below.
-
-@param val The <b>val</b> argument is a pointer to the
-variable into which the value should be read.  The type of the variable
-varies depending on the geokey_t given.  While there is no ready mapping
-of geokey_t values onto types, in general code values are of type <i>short</i>,
-citations are strings, and everything else is of type <i>double</i>.  Note
-that pointer's to <i>int</i> should never be passed to GTIFKeyGet() for
-integer values as they will be shorts, and the int's may not be properly
-initialized (and will be grossly wrong on MSB systems).
-
-@param index Indicates how far into the list of values
-for this geokey to offset. Should normally be zero.
-
-@param count Indicates how many values
-to read.  At this time all keys except for strings have only one value,
-so <b>index</b> should be zero, and <b>count</b> should be one.<p>
-
-The <b>key</b> indicates the key name to be written to the
-file and should from the geokey_t enumeration 
-(eg. <tt>ProjectedCSTypeGeoKey</tt>).  The full list of possible geokey_t
-values can be found in geokeys.inc, or in the online documentation for
-GTIFKeyGet().<p>
-
-The <b>type</b> should be one of TYPE_SHORT, TYPE_ASCII, or TYPE_DOUBLE and
-will indicate the type of value being passed at the end of the argument
-list (the key value).  The <b>count</b> should be one except for strings
-when it should be the length of the string (or zero to for this to be
-computed internally).  As a special case a <b>count</b> of -1 can be
-used to request an existing key be deleted, in which no value is passed.<p>
-
-The actual value is passed at the end of the argument list, and should be
-a short, a double, or a char * value.  Note that short and double values
-are passed as is, not as pointers.<p>
-
-Note that key values aren't actually flushed to the file until
-GTIFWriteKeys() is called.  Till then 
-the new values are just kept with the GTIF structure.<p>
-
-<b>Example:</b><p>
-
-<pre>
-    GTIFKeySet(gtif, GTRasterTypeGeoKey, TYPE_SHORT, 1, 
-               RasterPixelIsArea);
-    GTIFKeySet(gtif, GTCitationGeoKey, TYPE_ASCII, 0, 
-               "UTM 11 North / NAD27" );
-</pre>
-
- */
-
-int GTIFKeySet(GTIF *gtif, geokey_t keyID, tagtype_t type, int count,...)
-{
-    va_list ap;
-    int index = gtif->gt_keyindex[ keyID ];
-    int newvalues = 0;
-    GeoKey *key;
-    char *data = NULL;
-    char *val = NULL;
-    pinfo_t sval;
-    double dval;
-
-    va_start(ap, count);
-    /* pass singleton keys by value */
-    if (count>1 && type!=TYPE_ASCII) 
-    {
-        val = va_arg(ap, char*);
-    }
-    else if( count == -1 )
-    {
-        /* delete the indicated tag */
-        va_end(ap);
-
-        if( index < 1 )
-            return 0;
-
-        if (gtif->gt_keys[index].gk_type == TYPE_ASCII)
-        {
-            _GTIFFree (gtif->gt_keys[index].gk_data);
-        }
-
-        while( index < gtif->gt_num_keys )
-        {
-            _GTIFmemcpy( gtif->gt_keys + index, 
-                         gtif->gt_keys + index + 1, 
-                         sizeof(GeoKey) );
-            gtif->gt_keyindex[gtif->gt_keys[index].gk_key] = index;
-            index++;
-        }
-
-        gtif->gt_num_keys--;
-        gtif->gt_nshorts -= sizeof(KeyEntry)/sizeof(pinfo_t);
-        gtif->gt_keyindex[keyID] = 0;
-        gtif->gt_flags |= FLAG_FILE_MODIFIED;
-
-        return 1;
-    }
-    else switch (type)
-    {
-      case TYPE_SHORT:  sval=(pinfo_t) va_arg(ap, int); val=(char *)&sval;     break;
-      case TYPE_DOUBLE: dval=va_arg(ap, dblparam_t); val=(char *)&dval;  break;
-      case TYPE_ASCII: 
-        val=va_arg(ap, char*);
-        count = strlen(val) + 1; /* force = string length */
-        break;
-      default:
-        assert( FALSE );
-        break;
-    }
-    va_end(ap);
-    
-    /* We assume here that there are no multi-valued SHORTS ! */
-    if (index)
-    {
-        /* Key already exists */
-        key = gtif->gt_keys+index;
-        if (type!=key->gk_type || count > key->gk_count)
-        {
-            /* need to reset data pointer */
-            key->gk_type = type;
-            key->gk_count = count;
-            key->gk_size = _gtiff_size[ type ];
-            newvalues = 1;
-        }
-    }
-    else
-    {
-        /* We need to create the key */
-        if (gtif->gt_num_keys == MAX_KEYS) return 0;
-        key = gtif->gt_keys + ++gtif->gt_num_keys;
-        index = gtif->gt_num_keys;
-        gtif->gt_keyindex[ keyID ] = index;
-        key->gk_key = keyID;
-        key->gk_type = type;
-        key->gk_count = count;
-        key->gk_size = _gtiff_size[ type ];
-        if (gtif->gt_keymin > keyID)  gtif->gt_keymin=keyID;
-        if (gtif->gt_keymax < keyID)  gtif->gt_keymax=keyID;
-        newvalues = 1;
-    }
-
-    if (newvalues)
-    {
-        switch (type)
-        {
-          case TYPE_SHORT:  
-            if (count > 1) return 0;
-            data = (char *)&key->gk_data; /* store value *in* data */
-            break;
-          case TYPE_DOUBLE:
-            key->gk_data = (char *)(gtif->gt_double + gtif->gt_ndoubles);
-            data = key->gk_data;
-            gtif->gt_ndoubles += count;
-            break;
-          case TYPE_ASCII:
-            break;
-          default:
-            va_end(ap);
-            return 0;
-        }
-        gtif->gt_nshorts += sizeof(KeyEntry)/sizeof(pinfo_t);
-    }
-
-    /* this fixes a bug where if a request is made to write a duplicate
-       key, we must initialize the data to a valid value.
-       Bryan Wells (bryan@athena.bangor.autometric.com) */
-        
-    else /* no new values, but still have something to write */
-    {
-        switch (type)
-        {
-          case TYPE_SHORT:  
-            if (count > 1) return 0;
-            data = (char *)&key->gk_data; /* store value *in* data */
-            break;
-          case TYPE_DOUBLE:
-            data = key->gk_data;
-            break;
-          case TYPE_ASCII:
-            break;
-          default:
-            return 0;
-        }
-    }
-        
-    switch (type)
-    {
-      case TYPE_ASCII:
-        /* throw away existing data and allocate room for new data */
-        if (key->gk_data != 0)
-        {
-            _GTIFFree(key->gk_data);
-        }
-        key->gk_data = (char *)_GTIFcalloc(count);
-        key->gk_count = count;
-        data = key->gk_data;
-        break;
-      default:
-        break;
-    }
-
-    _GTIFmemcpy(data, val, count*key->gk_size);
-    
-    gtif->gt_flags |= FLAG_FILE_MODIFIED;
-    return 1;
-}
diff --git a/Utilities/otbgeotiff/geo_tiffp.c b/Utilities/otbgeotiff/geo_tiffp.c
deleted file mode 100644
index 75de1dfe4f14431d572b408b9dae57cca9d8ff63..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_tiffp.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/**********************************************************************
- *
- *  geo_tiffp.c  Private TIFF interface module for GEOTIFF
- *
- *    This module implements the interface between the GEOTIFF
- *    tag parser and the TIFF i/o module. The current setup
- *    relies on the "libtiff" code, but if you use your own
- *    TIFF reader software, you may replace the module implementations
- *    here with your own calls. No "libtiff" dependencies occur
- *    anywhere else in this code.
- *
- **********************************************************************/
- 
-#include "geotiff.h"    /* public GTIFF interface */
-
-#include "geo_tiffp.h"  /* Private TIFF interface */
-#include "geo_keyp.h"   /* Private GTIFF interface */
-
-/* tiff size array global */
-gsize_t _gtiff_size[] = { 0, 1, 2, 4, 8, 1, 4, 8, 1, 2, 4, 1 };
-
-static int        _GTIFGetField (tiff_t *tif, pinfo_t tag, int *count, void *value );
-static int        _GTIFSetField (tiff_t *tif, pinfo_t tag, int  count, void *value );
-static tagtype_t  _GTIFTagType  (tiff_t *tif, pinfo_t tag);
-
-/*
- * Set up default TIFF handlers. 
- */
-void _GTIFSetDefaultTIFF(TIFFMethod *method)
-{
-	if (!method) return;
-	
-	method->get = _GTIFGetField;
-	method->set = _GTIFSetField;
-	method->type = _GTIFTagType;
-}
-
-gdata_t _GTIFcalloc(gsize_t size)
-{
-    gdata_t data=(gdata_t)_TIFFmalloc((tsize_t)size);
-	if (data) _TIFFmemset((tdata_t)data,0,(tsize_t)size);
-	return data;
-}
-
-gdata_t _GTIFrealloc(gdata_t ptr, gsize_t size)
-{
-    return( _TIFFrealloc((tdata_t)ptr, (tsize_t) size) );
-}
-
-void _GTIFmemcpy(gdata_t out,gdata_t in,gsize_t size)
-{
-	_TIFFmemcpy((tdata_t)out,(tdata_t)in,(tsize_t)size);
-}
-
-void _GTIFFree(gdata_t data)
-{
-	if (data) _TIFFfree((tdata_t)data);
-}
-
-
-
-/* returns the value of TIFF tag <tag>, or if
- * the value is an array, returns an allocated buffer
- * containing the values. Allocate a copy of the actual
- * buffer, sized up for updating.
- */
-static int _GTIFGetField (tiff_t *tif, pinfo_t tag, int *count, void *val )
-{
-	int status;
-	unsigned short scount=0;
-	char *tmp;
-	char *value;
-	gsize_t size = _gtiff_size[_GTIFTagType (tif,tag)];
-	
-	if (_GTIFTagType(tif,  tag) == TYPE_ASCII)
-	{
-		status = TIFFGetField((TIFF *)tif,tag,&tmp);
-		if (!status) return status;
-		scount = (unsigned short) (strlen(tmp)+1);
-	}
-	else status = TIFFGetField((TIFF *)tif,tag,&scount,&tmp);
-	if (!status) return status;
-	
-	*count = scount;
-
-	value = (char *)_GTIFcalloc( (scount+MAX_VALUES)*size);
-	if (!value) return 0;
-	
-	_TIFFmemcpy( value, tmp,  size * scount);
-	
-	*(char **)val = value;
-	return status;
-}
-
-/* 
- * Set a GeoTIFF TIFF field.
- */
-static int _GTIFSetField (tiff_t *tif, pinfo_t tag, int count, void *value )
-{
-	int status;
-	unsigned short scount = (unsigned short) count;
-
-	/* libtiff ASCII uses null-delimiter */
-	if (_GTIFTagType(tif,  tag) == TYPE_ASCII)
-		status = TIFFSetField((TIFF *)tif,tag,value);
-	else 
-		status = TIFFSetField((TIFF *)tif,tag,scount,value);
-	return status;
-}
-
-
-/*
- *  This routine is supposed to return the TagType of the <tag>
- *  TIFF tag. Unfortunately, "libtiff" does not provide this
- *  service by default, so we just have to "know" what type of tags
- *  we've got, and how many. We only define the ones Geotiff
- *  uses here, and others return UNKNOWN. The "tif" parameter
- *  is provided for those TIFF implementations that provide
- *  for tag-type queries.
- */
-static tagtype_t  _GTIFTagType  (tiff_t *tif, pinfo_t tag)
-{
-	tagtype_t ttype;
-
-	(void) tif; /* dummy reference */
-	
-	switch (tag)
-	{
-		case GTIFF_ASCIIPARAMS:    ttype=TYPE_ASCII; break;
-		case GTIFF_PIXELSCALE:
-		case GTIFF_TRANSMATRIX:
-		case GTIFF_TIEPOINTS:
-		case GTIFF_DOUBLEPARAMS:   ttype=TYPE_DOUBLE; break;
-		case GTIFF_GEOKEYDIRECTORY: ttype=TYPE_SHORT; break;
-		default: ttype = TYPE_UNKNOWN;
-	}
-	
-	return ttype;
-}
-
diff --git a/Utilities/otbgeotiff/geo_tiffp.h b/Utilities/otbgeotiff/geo_tiffp.h
deleted file mode 100644
index 8b065b8ddeeb244e6354f412269a367c889be8f4..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_tiffp.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**********************************************************************
- *
- *  geo_tiffp.h - Private interface for TIFF tag parsing.
- *
- *   Written by: Niles D. Ritter
- *
- *   This interface file encapsulates the interface to external TIFF
- *   file-io routines and definitions. The current configuration
- *   assumes that the "libtiff" module is used, but if you have your
- *   own TIFF reader, you may replace the definitions with your own
- *   here, and replace the implementations in geo_tiffp.c. No other
- *   modules have any explicit dependence on external TIFF modules.
- *
- *  Revision History;
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    6 July,  1995      Niles D. Ritter         Fix prototypes
- *
- **********************************************************************/
-
-#ifndef __geo_tiffp_h_
-#define __geo_tiffp_h_
-
-/**********************************************************************
- *
- *                        Private includes
- *
- *   If you are not using libtiff and XTIFF, replace this include file
- *    with the appropriate one for your own TIFF parsing routines.
- *
- *   Revision History
- * 
- *      19 September 1995   ndr    Demoted Intergraph trans matrix.
- *
- **********************************************************************/
-
-#include "geotiff.h"
-#include "xtiffio.h"
-#include "cpl_serv.h"
-
-/*
- * dblparam_t is the type that a double precision
- * floating point value will have on the parameter
- * stack (when coerced by the compiler). You shouldn't
- * have to change this.
- */
-#ifdef applec
-typedef extended dblparam_t;
-#else
-typedef double dblparam_t;
-#endif
-
-
-/**********************************************************************
- *
- *                        Private defines
- *
- *   If you are not using "libtiff"/LIBXTIFF, replace these definitions
- *   with the appropriate definitions to access the geo-tags
- *
- **********************************************************************/
- 
-typedef unsigned short pinfo_t;    /* SHORT ProjectionInfo tag type */
-typedef TIFF    tiff_t;            /* TIFF file descriptor          */
-typedef tdata_t  gdata_t;          /* pointer to data */
-typedef tsize_t  gsize_t;          /* data allocation size */
- 
-#define GTIFF_GEOKEYDIRECTORY   TIFFTAG_GEOKEYDIRECTORY /* from xtiffio.h */
-#define GTIFF_DOUBLEPARAMS      TIFFTAG_GEODOUBLEPARAMS
-#define GTIFF_ASCIIPARAMS       TIFFTAG_GEOASCIIPARAMS
-#define GTIFF_PIXELSCALE        TIFFTAG_GEOPIXELSCALE
-#define GTIFF_TRANSMATRIX       TIFFTAG_GEOTRANSMATRIX
-#define GTIFF_INTERGRAPH_MATRIX TIFFTAG_INTERGRAPH_MATRIX
-#define GTIFF_TIEPOINTS         TIFFTAG_GEOTIEPOINTS
-#define GTIFF_LOCAL          0
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * Method function pointer types
- */
-typedef int        (*GTGetFunction) (tiff_t *tif, pinfo_t tag, int *count, void *value );
-typedef int        (*GTSetFunction) (tiff_t *tif, pinfo_t tag, int  count, void *value );
-typedef tagtype_t  (*GTTypeFunction) (tiff_t *tif, pinfo_t tag);
-typedef struct     _TIFFMethod {
-	GTGetFunction get;
-	GTSetFunction set;
-	GTTypeFunction type;
-} TIFFMethod;
-
-/**********************************************************************
- *
- *               Protected Function Declarations  
- *
- *   These routines are exposed implementations, and should not
- *   be used by external GEOTIFF client programs.
- *
- **********************************************************************/
-
-extern gsize_t _gtiff_size[]; /* TIFF data sizes */
-extern void CPL_DLL _GTIFSetDefaultTIFF(TIFFMethod *method);
-extern gdata_t CPL_DLL _GTIFcalloc(gsize_t);
-extern gdata_t CPL_DLL _GTIFrealloc(gdata_t,gsize_t);
-extern void CPL_DLL _GTIFFree(gdata_t data);
-extern void CPL_DLL _GTIFmemcpy(gdata_t out,gdata_t in,gsize_t size);
-
-#if defined(__cplusplus)
-} 
-#endif
-
-
-#endif /* __geo_tiffp_h_ */
diff --git a/Utilities/otbgeotiff/geo_trans.c b/Utilities/otbgeotiff/geo_trans.c
deleted file mode 100644
index 590f55efdde75418990ea1b237c44b250acf6e42..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_trans.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/******************************************************************************
- * $Id: geo_trans.c,v 1.10 2003/07/08 17:31:30 warmerda Exp $
- *
- * Project:  libgeotiff
- * Purpose:  Code to abstract translation between pixel/line and PCS
- *           coordinates.
- * 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.
- ******************************************************************************
- *
- * $Log: geo_trans.c,v $
- * Revision 1.10  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.9  2001/11/28 14:20:30  warmerda
- * fixed transform memory leak in GTIFPCSToImage
- *
- * Revision 1.8  2001/04/06 16:56:22  warmerda
- * added support for PCSToImage with matrix
- *
- * Revision 1.7  2001/03/05 03:25:23  warmerda
- * restructure cleanup, and apply to GTIFPCSToImage()
- *
- * Revision 1.6  2001/03/04 22:37:39  warmerda
- * fixed memory leak for fields fetched with gt_methods.get - Alan Gray
- *
- * Revision 1.5  2000/08/22 03:32:46  warmerda
- * removed GTIFTiepointTranslate code
- *
- * Revision 1.4  1999/09/17 01:19:51  warmerda
- * Fixed bug in use of transform matrix.
- *
- * Revision 1.3  1999/09/16 21:25:40  warmerda
- * Added tiepoint, and transformation matrix based translation.  Note
- * that we don't try to invert the transformation matrix for
- * GTIFPCSToImage().
- *
- * Revision 1.2  1999/09/07 20:00:40  warmerda
- * Fixed count/tiepoint_count bug in GTIFPCSToImage().
- *
- * Revision 1.1  1999/05/04 03:07:57  warmerda
- * New
- *
- */
- 
-#include "geotiff.h"
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-#include "geokeys.h"
-
-/************************************************************************/
-/*                          inv_geotransform()                          */
-/*                                                                      */
-/*      Invert a 6 term geotransform style matrix.                      */
-/************************************************************************/
-
-static int inv_geotransform( double *gt_in, double *gt_out )
-
-{
-    double	det, inv_det;
-
-    /* we assume a 3rd row that is [0 0 1] */
-
-    /* Compute determinate */
-
-    det = gt_in[0] * gt_in[4] - gt_in[1] * gt_in[3];
-
-    if( fabs(det) < 0.000000000000001 )
-        return 0;
-
-    inv_det = 1.0 / det;
-
-    /* compute adjoint, and devide by determinate */
-
-    gt_out[0] =  gt_in[4] * inv_det;
-    gt_out[3] = -gt_in[3] * inv_det;
-
-    gt_out[1] = -gt_in[1] * inv_det;
-    gt_out[4] =  gt_in[0] * inv_det;
-
-    gt_out[2] = ( gt_in[1] * gt_in[5] - gt_in[2] * gt_in[4]) * inv_det;
-    gt_out[5] = (-gt_in[0] * gt_in[5] + gt_in[2] * gt_in[3]) * inv_det;
-
-    return 1;
-}
-
-/************************************************************************/
-/*                       GTIFTiepointTranslate()                        */
-/************************************************************************/
-
-int GTIFTiepointTranslate( int gcp_count, double * gcps_in, double * gcps_out,
-                           double x_in, double y_in,
-                           double *x_out, double *y_out )
-
-{
-    (void) gcp_count;
-    (void) gcps_in;
-    (void) gcps_out;
-    (void) x_in;
-    (void) y_in;
-    (void) x_out;
-    (void) y_out;
-    
-    /* I would appreciate a _brief_ block of code for doing second order
-       polynomial regression here! */
-    return FALSE;
-}
-
-
-/************************************************************************/
-/*                           GTIFImageToPCS()                           */
-/************************************************************************/
-
-/**
- * Translate a pixel/line coordinate to projection coordinates.
- *
- * At this time this function does not support image to PCS translations for
- * tiepoints-only definitions,  only pixelscale and transformation matrix
- * formulations.
- *
- * @param gtif The handle from GTIFNew() indicating the target file.
- * @param x A pointer to the double containing the pixel offset on input,
- * and into which the easting/longitude will be put on completion.
- * @param y A pointer to the double containing the line offset on input,
- * and into which the northing/latitude will be put on completion.
- *
- * @return TRUE if the transformation succeeds, or FALSE if it fails.  It may
- * fail if the file doesn't have properly setup transformation information,
- * or it is in a form unsupported by this function.
- */
-
-int GTIFImageToPCS( GTIF *gtif, double *x, double *y )
-
-{
-    int     res = FALSE;
-    int     tiepoint_count, count, transform_count;
-    tiff_t *tif=gtif->gt_tif;
-    double *tiepoints   = 0;
-    double *pixel_scale = 0;
-    double *transform   = 0;
-
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TIEPOINTS,
-                              &tiepoint_count, &tiepoints ))
-        tiepoint_count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &pixel_scale ))
-        count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TRANSMATRIX,
-                                &transform_count, &transform ))
-        transform_count = 0;
-
-/* -------------------------------------------------------------------- */
-/*      If the pixelscale count is zero, but we have tiepoints use      */
-/*      the tiepoint based approach.                                    */
-/* -------------------------------------------------------------------- */
-    if( tiepoint_count > 6 && count == 0 ) 
-    {
-        res = GTIFTiepointTranslate( tiepoint_count / 6,
-                                     tiepoints, tiepoints + 3,
-                                     *x, *y, x, y );
-    }
-
-/* -------------------------------------------------------------------- */
-/*	If we have a transformation matrix, use it. 			*/
-/* -------------------------------------------------------------------- */
-    else if( transform_count == 16 ) 
-    {
-        double x_in = *x, y_in = *y;
-
-        *x = x_in * transform[0] + y_in * transform[1] + transform[3];
-        *y = x_in * transform[4] + y_in * transform[5] + transform[7];
-        
-        res = TRUE;
-    } 
-
-/* -------------------------------------------------------------------- */
-/*      For now we require one tie point, and a valid pixel scale.      */
-/* -------------------------------------------------------------------- */
-    else if( count < 3 || tiepoint_count < 6 ) 
-    {
-        res = FALSE;
-    } 
-
-    else 
-    {
-        *x = (*x - tiepoints[0]) * pixel_scale[0] + tiepoints[3];
-        *y = (*y - tiepoints[1]) * (-1 * pixel_scale[1]) + tiepoints[4];
-
-        res = TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup                                                         */
-/* -------------------------------------------------------------------- */
-    if(tiepoints)   
-        _GTIFFree(tiepoints);
-    if(pixel_scale)
-        _GTIFFree(pixel_scale);
-    if(transform)  
-        _GTIFFree(transform);
-
-    return res;
-}
-
-/************************************************************************/
-/*                           GTIFPCSToImage()                           */
-/************************************************************************/
-
-/**
- * Translate a projection coordinate to pixel/line coordinates.
- *
- * At this time this function does not support PCS to image translations for
- * tiepoints-only based definitions, only matrix and pixelscale/tiepoints 
- * formulations are supposed.
- *
- * @param gtif The handle from GTIFNew() indicating the target file.
- * @param x A pointer to the double containing the pixel offset on input,
- * and into which the easting/longitude will be put on completion.
- * @param y A pointer to the double containing the line offset on input,
- * and into which the northing/latitude will be put on completion.
- *
- * @return TRUE if the transformation succeeds, or FALSE if it fails.  It may
- * fail if the file doesn't have properly setup transformation information,
- * or it is in a form unsupported by this function.
- */
-
-int GTIFPCSToImage( GTIF *gtif, double *x, double *y )
-
-{
-    double 	*tiepoints = NULL;
-    int 	tiepoint_count, count, transform_count = 0;
-    double	*pixel_scale = NULL;
-    double 	*transform   = NULL;
-    tiff_t 	*tif=gtif->gt_tif;
-    int		result = FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Fetch tiepoints and pixel scale.                                */
-/* -------------------------------------------------------------------- */
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TIEPOINTS,
-                              &tiepoint_count, &tiepoints ))
-        tiepoint_count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &pixel_scale ))
-        count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TRANSMATRIX,
-                                &transform_count, &transform ))
-        transform_count = 0;
-
-/* -------------------------------------------------------------------- */
-/*      If the pixelscale count is zero, but we have tiepoints use      */
-/*      the tiepoint based approach.                                    */
-/* -------------------------------------------------------------------- */
-    if( tiepoint_count > 6 && count == 0 )
-    {
-        result = GTIFTiepointTranslate( tiepoint_count / 6,
-                                        tiepoints + 3, tiepoints,
-                                        *x, *y, x, y );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle matrix - convert to "geotransform" format, invert and    */
-/*      apply.                                                          */
-/* -------------------------------------------------------------------- */
-    else if( transform_count == 16 )
-    {
-        double  x_in = *x, y_in = *y;
-        double	gt_in[6], gt_out[6];
-        
-        gt_in[0] = transform[0];
-        gt_in[1] = transform[1];
-        gt_in[2] = transform[3];
-        gt_in[3] = transform[4];
-        gt_in[4] = transform[5];
-        gt_in[5] = transform[7];
-
-        if( !inv_geotransform( gt_in, gt_out ) )
-            result = FALSE;
-        else
-        {
-            *x = x_in * gt_out[0] + y_in * gt_out[1] + gt_out[2];
-            *y = x_in * gt_out[3] + y_in * gt_out[4] + gt_out[5];
-            
-            result = TRUE;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      For now we require one tie point, and a valid pixel scale.      */
-/* -------------------------------------------------------------------- */
-    else if( count >= 3 && tiepoint_count >= 6 )
-    {
-        *x = (*x - tiepoints[3]) / pixel_scale[0] + tiepoints[0];
-        *y = (*y - tiepoints[4]) / (-1 * pixel_scale[1]) + tiepoints[1];
-
-        result = TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup.                                                        */
-/* -------------------------------------------------------------------- */
-    if(tiepoints)   
-        _GTIFFree(tiepoints);
-    if(pixel_scale)
-        _GTIFFree(pixel_scale);
-    if(transform)  
-        _GTIFFree(transform);
-
-    return result;
-}
-
diff --git a/Utilities/otbgeotiff/geo_write.c b/Utilities/otbgeotiff/geo_write.c
deleted file mode 100644
index 0e94d53dcbd4fdda89e158c185d3f469e0f28c32..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geo_write.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/**********************************************************************
- *
- *  geo_write.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any source code derived therefrom.
- *
- **********************************************************************/
-
-#include "geotiffio.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-static int WriteKey(GTIF* gt, TempKeyData* tempData,
-                    KeyEntry* entptr, GeoKey* keyptr);
-static int SortKeys(GTIF* gt,int *sortkeys);
-
-
-/**
-This function flushes all the GeoTIFF keys that have been set with the 
-GTIFKeySet() function into the associated 
-TIFF file.
-
-@param gt The GeoTIFF handle returned by GTIFNew.
-
-GTIFWriteKeys() should be called before 
-GTIFFree() is used to deallocate a GeoTIFF access handle.
- */
-
-int GTIFWriteKeys(GTIF *gt)
-{
-    int i;
-    GeoKey *keyptr;
-    KeyEntry *entptr;
-    KeyHeader *header;
-    TempKeyData tempData;
-    int sortkeys[MAX_KEYS];
-	
-    if (!(gt->gt_flags & FLAG_FILE_MODIFIED)) return 1;
-
-    if( gt->gt_tif == NULL )
-        return 0;
-	
-    tempData.tk_asciiParams = 0;
-    tempData.tk_asciiParamsLength = 0;
-    tempData.tk_asciiParamsOffset = 0;
-
-    /*  Sort the Keys into numerical order */
-    if (!SortKeys(gt,sortkeys))
-    {
-        /* XXX error: a key was not recognized */
-    }
-	
-    /* Set up header of ProjectionInfo tag */
-    header = (KeyHeader *)gt->gt_short;
-    header->hdr_num_keys = (pinfo_t) gt->gt_num_keys;
-    header->hdr_version  = GvCurrentVersion;
-    header->hdr_rev_major  = GvCurrentRevision;
-    header->hdr_rev_minor  = GvCurrentMinorRev;
-	
-    /* Sum up the ASCII tag lengths */
-    for (i = 0; i < gt->gt_num_keys; i++)
-    {
-        keyptr = gt->gt_keys + sortkeys[i];
-        if (keyptr->gk_type == TYPE_ASCII)
-        {
-            tempData.tk_asciiParamsLength += keyptr->gk_count;
-        }
-    }
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        tempData.tk_asciiParams =
-            (char *)_GTIFcalloc(tempData.tk_asciiParamsLength + 1);
-        tempData.tk_asciiParams[tempData.tk_asciiParamsLength] = '\0';
-    }
-
-    /* Set up the rest of SHORT array properly */
-    keyptr = gt->gt_keys;
-    entptr = (KeyEntry*)(gt->gt_short + 4);
-    for (i=0; i< gt->gt_num_keys; i++,entptr++)
-    {
-        if (!WriteKey(gt,&tempData,entptr,keyptr+sortkeys[i])) return 0;
-    }	
-	
-    /* Write out the Key Directory */
-    (gt->gt_methods.set)(gt->gt_tif, GTIFF_GEOKEYDIRECTORY, gt->gt_nshorts, gt->gt_short );	
-	
-    /* Write out the params directories */
-    if (gt->gt_ndoubles)
-        (gt->gt_methods.set)(gt->gt_tif, GTIFF_DOUBLEPARAMS, gt->gt_ndoubles, gt->gt_double );
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        /* just to be safe */
-        tempData.tk_asciiParams[tempData.tk_asciiParamsLength] = '\0';
-        (gt->gt_methods.set)(gt->gt_tif,
-                             GTIFF_ASCIIPARAMS, 0, tempData.tk_asciiParams);
-    }
-	
-    gt->gt_flags &= ~FLAG_FILE_MODIFIED;
-
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        _GTIFFree (tempData.tk_asciiParams);
-    }
-    return 1;
-}
-
-/**********************************************************************
- *
- *                        Private Routines
- *
- **********************************************************************/
- 
-/*
- * Given GeoKey, write out the KeyEntry entries, returning 0 if failure.
- *  This is the exact complement of ReadKey().
- */
-
-static int WriteKey(GTIF* gt, TempKeyData* tempData,
-                    KeyEntry* entptr, GeoKey* keyptr)
-{
-    int count;
-	
-    entptr->ent_key = (pinfo_t) keyptr->gk_key;
-    entptr->ent_count = (pinfo_t) keyptr->gk_count;
-    count = entptr->ent_count;
-	
-    if (count==1 && keyptr->gk_type==TYPE_SHORT)
-    {
-        entptr->ent_location = GTIFF_LOCAL;
-        entptr->ent_val_offset = *(pinfo_t*)&keyptr->gk_data;
-        return 1;
-    }
-		  
-    switch (keyptr->gk_type)
-    {
-      case TYPE_SHORT:
-        entptr->ent_location = GTIFF_GEOKEYDIRECTORY;
-        entptr->ent_val_offset = (pinfo_t)
-            ((pinfo_t*)keyptr->gk_data - gt->gt_short);
-        break;
-      case TYPE_DOUBLE:
-        entptr->ent_location = GTIFF_DOUBLEPARAMS;
-        entptr->ent_val_offset = (pinfo_t) 
-            ((double*)keyptr->gk_data - gt->gt_double);
-        break;
-      case TYPE_ASCII:
-        entptr->ent_location = GTIFF_ASCIIPARAMS;
-        entptr->ent_val_offset = (pinfo_t) tempData->tk_asciiParamsOffset;
-        _GTIFmemcpy (tempData->tk_asciiParams + tempData->tk_asciiParamsOffset
-                     , keyptr->gk_data, keyptr->gk_count);
-        tempData->tk_asciiParams[tempData->tk_asciiParamsOffset+keyptr->gk_count-1] = '|';
-        tempData->tk_asciiParamsOffset += keyptr->gk_count;
-        break;
-      default:
-        return 0; /* failure */
-    }
-	
-    return 1; /* success */
-}
-
-
-/* 
- * Numerically sort the GeoKeys.
- * We just do a linear search through
- * the list and pull out the keys that were set.
- */
-
-static int SortKeys(GTIF* gt,int *sortkeys)
-{
-    int loc;
-    int nkeys=0;
-    geokey_t key,kmin,kmax;
-    int *index = gt->gt_keyindex;
-	
-    kmin = (geokey_t) gt->gt_keymin;
-    kmax = (geokey_t) gt->gt_keymax;
-    for (key=kmin; key<=kmax; key++)
-    {
-        if ( (loc=index[key]) != 0 )
-        {
-            sortkeys[nkeys] = loc;
-            nkeys++;
-        }
-    }
-	
-    return nkeys==gt->gt_num_keys;
-}
-
diff --git a/Utilities/otbgeotiff/geokeys.h b/Utilities/otbgeotiff/geokeys.h
deleted file mode 100644
index f3e47c14b3519253085695a553d58efe1bb6b913..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geokeys.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**********************************************************************
- *
- *  geokeys.h - Public registry for valid GEOTIFF GeoKeys.
- *
- *   Written By: Niles D. Ritter
- *
- *  Revision History:
- *
- *     Rev.#  Author  M/D/Y Date     Key Changes/Additions
- *     -----  ------  ----------  -------------------------------------
- *       0      ndr    06/10/95      Inital Beta Release
- *       1      ndr    09/18/95      Final 1.0 Release
- *
- **********************************************************************/
-
-#ifndef __geokeys_h_
-#define __geokeys_h_
-
-/* The GvCurrentRevision number should be incremented whenever a 
- * new set of Keys are defined or modified in "geokeys.inc", and comments 
- * added to the "Revision History" section above. If only code
- * _values_ are augmented, the "GvCurrentMinorRev" number should
- * be incremented instead (see "geovalues.h"). Whenever the 
- * GvCurrentRevision is incremented, the GvCurrentMinorRev should
- * be reset to zero.
- *
- *
- * The Section Numbers below refer to the GeoTIFF Spec sections
- * in which these values are documented.
- *
- */
-#define GvCurrentRevision  1  /* Final 1.0 Release */
-
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-#define ValuePair(name,value)    name = value,
-
-typedef enum {
-   BaseGeoKey   =  1024,               /* First valid code */
-
-#  include "geokeys.inc"         /* geokey database */
-
-   ReservedEndGeoKey  =  32767,
-   
-   /* Key space available for Private or internal use */
-   PrivateBaseGeoKey = 32768,    /* Consistent with TIFF Private tags */
-   PrivateEndGeoKey  = 65535,    
-   
-   EndGeoKey = 65535             /* Largest Possible GeoKey ID */
-} geokey_t;
-
-
-#endif /* __geokeys_h_ */
diff --git a/Utilities/otbgeotiff/geokeys.inc b/Utilities/otbgeotiff/geokeys.inc
deleted file mode 100644
index 286c23c2bd4cbc1a262eec1bc79b14296f2bebd9..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geokeys.inc
+++ /dev/null
@@ -1,76 +0,0 @@
-/* GeoTIFF GeoKey Database */
-
-/* Note: Any changes/additions to this database require */
-/* a change in the revision value in geokeys.h          */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-/*  Revised 28 Sep 1995   NDR -- Added Rev. 1.0 aliases. */
-
-/* 6.2.1 GeoTIFF Configuration Keys */
-
-ValuePair(  GTModelTypeGeoKey,	1024) /* Section 6.3.1.1 Codes       */
-ValuePair(  GTRasterTypeGeoKey,	1025) /* Section 6.3.1.2 Codes       */
-ValuePair(  GTCitationGeoKey,	1026) /* documentation */
-
-/* 6.2.2 Geographic CS Parameter Keys */
-
-ValuePair(  GeographicTypeGeoKey,	2048) /* Section 6.3.2.1 Codes     */
-ValuePair(  GeogCitationGeoKey,	2049) /* documentation             */
-ValuePair(  GeogGeodeticDatumGeoKey,	2050) /* Section 6.3.2.2 Codes     */
-ValuePair(  GeogPrimeMeridianGeoKey,	2051) /* Section 6.3.2.4 codes     */
-ValuePair(  GeogLinearUnitsGeoKey,	2052) /* Section 6.3.1.3 Codes     */
-ValuePair(  GeogLinearUnitSizeGeoKey,	2053) /* meters                    */
-ValuePair(  GeogAngularUnitsGeoKey,	2054) /* Section 6.3.1.4 Codes     */
-ValuePair(  GeogAngularUnitSizeGeoKey,	2055) /* radians                   */
-ValuePair(  GeogEllipsoidGeoKey,	2056) /* Section 6.3.2.3 Codes     */
-ValuePair(  GeogSemiMajorAxisGeoKey,	2057) /* GeogLinearUnits           */
-ValuePair(  GeogSemiMinorAxisGeoKey,	2058) /* GeogLinearUnits           */
-ValuePair(  GeogInvFlatteningGeoKey,	2059) /* ratio                     */
-ValuePair(  GeogAzimuthUnitsGeoKey,	2060) /* Section 6.3.1.4 Codes     */
-ValuePair(  GeogPrimeMeridianLongGeoKey,	2061) /* GeoAngularUnit            */
-
-/* 6.2.3 Projected CS Parameter Keys */
-/*    Several keys have been renamed,*/
-/*    and the deprecated names aliased for backward compatibility */
-
-ValuePair(  ProjectedCSTypeGeoKey,	3072)     /* Section 6.3.3.1 codes   */
-ValuePair(  PCSCitationGeoKey,	3073)     /* documentation           */
-ValuePair(  ProjectionGeoKey,	3074)     /* Section 6.3.3.2 codes   */
-ValuePair(  ProjCoordTransGeoKey,	3075)     /* Section 6.3.3.3 codes   */
-ValuePair(  ProjLinearUnitsGeoKey,	3076)     /* Section 6.3.1.3 codes   */
-ValuePair(  ProjLinearUnitSizeGeoKey,	3077)     /* meters                  */
-ValuePair(  ProjStdParallel1GeoKey,	3078)     /* GeogAngularUnit */
-ValuePair(  ProjStdParallelGeoKey,ProjStdParallel1GeoKey) /* ** alias **   */
-ValuePair(  ProjStdParallel2GeoKey,	3079)     /* GeogAngularUnit */
-ValuePair(  ProjNatOriginLongGeoKey,	3080)     /* GeogAngularUnit */
-ValuePair(  ProjOriginLongGeoKey,ProjNatOriginLongGeoKey) /* ** alias **     */
-ValuePair(  ProjNatOriginLatGeoKey,	3081)     /* GeogAngularUnit */
-ValuePair(  ProjOriginLatGeoKey,ProjNatOriginLatGeoKey)   /* ** alias **     */
-ValuePair(  ProjFalseEastingGeoKey,	3082)     /* ProjLinearUnits */
-ValuePair(  ProjFalseNorthingGeoKey,	3083)     /* ProjLinearUnits */
-ValuePair(  ProjFalseOriginLongGeoKey,	3084)     /* GeogAngularUnit */
-ValuePair(  ProjFalseOriginLatGeoKey,	3085)     /* GeogAngularUnit */
-ValuePair(  ProjFalseOriginEastingGeoKey,	3086)     /* ProjLinearUnits */
-ValuePair(  ProjFalseOriginNorthingGeoKey,	3087)     /* ProjLinearUnits */
-ValuePair(  ProjCenterLongGeoKey,	3088)     /* GeogAngularUnit */
-ValuePair(  ProjCenterLatGeoKey,	3089)     /* GeogAngularUnit */
-ValuePair(  ProjCenterEastingGeoKey,	3090)     /* ProjLinearUnits */
-ValuePair(  ProjCenterNorthingGeoKey,	3091)     /* ProjLinearUnits */
-ValuePair(  ProjScaleAtNatOriginGeoKey,	3092)     /* ratio   */
-ValuePair(  ProjScaleAtOriginGeoKey,ProjScaleAtNatOriginGeoKey)  /* ** alias **   */
-ValuePair(  ProjScaleAtCenterGeoKey,	3093)     /* ratio   */
-ValuePair(  ProjAzimuthAngleGeoKey,	3094)     /* GeogAzimuthUnit */
-ValuePair(  ProjStraightVertPoleLongGeoKey, 3095) /* GeogAngularUnit */
-ValuePair(  ProjRectifiedGridAngleGeoKey, 3096)   /* GeogAngularUnit */
-
-/* 6.2.4 Vertical CS Keys */
-   
-ValuePair(  VerticalCSTypeGeoKey,	4096)  /* Section 6.3.4.1 codes   */
-ValuePair(  VerticalCitationGeoKey,	4097)  /* documentation */
-ValuePair(  VerticalDatumGeoKey,	4098)  /* Section 6.3.4.2 codes   */
-ValuePair(  VerticalUnitsGeoKey,	4099)  /* Section 6.3.1 (.x) codes   */
-
-/* End of Data base */
diff --git a/Utilities/otbgeotiff/geonames.h b/Utilities/otbgeotiff/geonames.h
deleted file mode 100644
index ccedc7df32f2f719dcceb8cb4f4350d3f5f45cdc..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geonames.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * geonames.h
- *
- *  This encapsulates all of the value-naming mechanism of 
- *  libgeotiff. 
- *
- *  Written By: Niles Ritter
- *
- *  Revision History:
- *
- *      Author     Date     Key Changes/Additions
- *      ------  ----------  -------------------------------------
- *      ndr    10 Jun 95     Inital Beta Release
- *      ndr    28 Jul 95     Added ModelType aliases, Kv aliases.
- */
-
-#ifndef __geonames_h
-#define __geonames_h
-
-struct _KeyInfo {
-	int ki_key;
-	char *ki_name;
-};
-typedef struct _KeyInfo KeyInfo;
-
-/* If memory is a premium, then omitting the 
- * long name lists may save some space; simply 
- * #define OMIT_GEOTIFF_NAMES in the compile statement
- * to remove all key->string translation.
- */
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-
-#ifndef OMIT_GEOTIFF_NAMES
-#define ValuePair(token,value)  {token,#token},
-#else
-#define ValuePair(token,value)
-#endif
-
-#define END_LIST { -1, (char *)0}
-
-/************************************************************
- *         6.2.x GeoTIFF Keys
- ************************************************************/
-
-static KeyInfo _keyInfo[] =  {
-#   include "geokeys.inc"   /* geokey database */
-    END_LIST
-};
-
-#define COMMON_VALUES \
-   {KvUndefined, "Undefined"}, \
-   {KvUserDefined,"User-Defined"}, \
-   ValuePair(KvUndefined,KvUndefined) \
-   ValuePair(KvUserDefined,KvUserDefined) 
-
-static KeyInfo _csdefaultValue[] = {
-   COMMON_VALUES
-   END_LIST  
-};
-
-/************************************************************
- *         6.3.x GeoTIFF Key Values
- ************************************************************/
-
-static KeyInfo _modeltypeValue[] = {
-   COMMON_VALUES
-    ValuePair(ModelTypeProjected,1)
-    ValuePair(ModelTypeGeographic,2)
-    ValuePair(ModelTypeGeocentric,3)
-    ValuePair(ModelProjected,1)     /* aliases */
-    ValuePair(ModelGeographic,2)    /* aliases */
-    ValuePair(ModelGeocentric,3)    /* aliases */
-   END_LIST  
-};
-
-static KeyInfo _rastertypeValue[] = {
-   COMMON_VALUES
-    ValuePair(RasterPixelIsArea,1)
-    ValuePair(RasterPixelIsPoint,2)
-   END_LIST  
-};
-
-static KeyInfo _geounitsValue[] = {
-   COMMON_VALUES
-#  include "epsg_units.inc"
-   END_LIST  
-};
-
-static KeyInfo _geographicValue[] = {
-   COMMON_VALUES
-#  include "epsg_gcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _geodeticdatumValue[] = {
-   COMMON_VALUES
-#  include "epsg_datum.inc"
-   END_LIST  
-};
-
-static KeyInfo _ellipsoidValue[] = {
-   COMMON_VALUES
-#  include "epsg_ellipse.inc"
-   END_LIST  
-};
-
-static KeyInfo _primemeridianValue[] = {
-   COMMON_VALUES
-#  include "epsg_pm.inc"
-   END_LIST  
-};
-
-static KeyInfo _pcstypeValue[] = {
-   COMMON_VALUES
-#  include "epsg_pcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _projectionValue[] = {
-   COMMON_VALUES
-#  include "epsg_proj.inc"
-   END_LIST  
-};
-
-static KeyInfo _coordtransValue[] = {
-   COMMON_VALUES
-#  include "geo_ctrans.inc"
-   END_LIST  
-};
-
-static KeyInfo _vertcstypeValue[] = {
-   COMMON_VALUES
-#  include "epsg_vertcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _vdatumValue[] = {
-   COMMON_VALUES
-    ValuePair(VDatumBase,1)
-   END_LIST  
-};
-
-#endif /* __geonames_h */
-
diff --git a/Utilities/otbgeotiff/geotiff.h b/Utilities/otbgeotiff/geotiff.h
deleted file mode 100644
index 0af6883e9ba54eca7d859ac4fdee946a2a70b14a..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geotiff.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/**********************************************************************
- *
- *  geotiff.h - Public interface for Geotiff tag parsing.
- *
- *
- *   Written By: Niles D. Ritter
- *
- **********************************************************************/
-
-#ifndef __geotiff_h_
-#define __geotiff_h_
-
-/**
- * \file geotiff.h
- *
- * Primary libgeotiff include file.
- *
- * This is the defacto registry for valid GEOTIFF GeoKeys
- * and their associated symbolic values. This is also the only file
- * of the GeoTIFF library which needs to be included in client source
- * code.
- */
-
-/* This Version code should only change if a drastic
- * alteration is made to the GeoTIFF key structure. Readers
- * encountering a larger value should give up gracefully.
- */
-#define GvCurrentVersion   1
-
-#define LIBGEOTIFF_VERSION 1240
-
-#include "geo_config.h"
-#include "geokeys.h"
-
-/**********************************************************************
- * Do we want to build as a DLL on windows?
- **********************************************************************/
-#if !defined(CPL_DLL)
-#  if defined(_WIN32) && defined(BUILD_AS_DLL)
-#    define CPL_DLL     __declspec(dllexport)
-#  else
-#    define CPL_DLL
-#  endif
-#endif
-
-/**********************************************************************
- *
- *                 Public Structures & Definitions
- *
- **********************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct gtiff GTIF;   /* struct gtiff is private */
-typedef unsigned short tifftag_t;
-typedef unsigned short geocode_t;
-typedef int (*GTIFPrintMethod)(char *string, void *aux);
-typedef int (*GTIFReadMethod)(char *string, void *aux);
-
-typedef enum {
-   TYPE_BYTE=1,
-   TYPE_SHORT=2,
-   TYPE_LONG=3,
-   TYPE_RATIONAL=4,
-   TYPE_ASCII=5,
-   TYPE_FLOAT=6,
-   TYPE_DOUBLE=7,
-   TYPE_SBYTE=8,
-   TYPE_SSHORT=9,
-   TYPE_SLONG=10,
-   TYPE_UNKNOWN=11
-} tagtype_t;
-
-
-/**********************************************************************
- *
- *                 Public Function Declarations
- *
- **********************************************************************/
-
-/* TIFF-level interface */
-GTIF CPL_DLL *GTIFNew(void *tif);
-void CPL_DLL  GTIFFree(GTIF *gtif);
-int  CPL_DLL  GTIFWriteKeys(GTIF *gtif);
-void CPL_DLL  GTIFDirectoryInfo(GTIF *gtif, int *versions, int *keycount);
-
-/* GeoKey Access */
-int  CPL_DLL  GTIFKeyInfo(GTIF *gtif, geokey_t key, int *size, tagtype_t* type);
-int  CPL_DLL  GTIFKeyGet(GTIF *gtif, geokey_t key, void *val, int index,
-                         int count);
-int  CPL_DLL  GTIFKeySet(GTIF *gtif, geokey_t keyID, tagtype_t type,
-                         int count,...);
-
-/* Metadata Import-Export utilities */
-void  CPL_DLL  GTIFPrint(GTIF *gtif, GTIFPrintMethod print, void *aux);
-int   CPL_DLL  GTIFImport(GTIF *gtif, GTIFReadMethod scan, void *aux);
-char  CPL_DLL *GTIFKeyName(geokey_t key);
-char  CPL_DLL *GTIFValueName(geokey_t key,int value);
-char  CPL_DLL *GTIFTypeName(tagtype_t type);
-char  CPL_DLL *GTIFTagName(int tag);
-int   CPL_DLL  GTIFKeyCode(char * key);
-int   CPL_DLL  GTIFValueCode(geokey_t key,char *value);
-int   CPL_DLL  GTIFTypeCode(char *type);
-int   CPL_DLL  GTIFTagCode(char *tag);
-
-/* Translation between image/PCS space */
-
-int CPL_DLL    GTIFImageToPCS( GTIF *gtif, double *x, double *y );
-int CPL_DLL    GTIFPCSToImage( GTIF *gtif, double *x, double *y );
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* __geotiff_h_ */
diff --git a/Utilities/otbgeotiff/geotiff_proj4.c b/Utilities/otbgeotiff/geotiff_proj4.c
deleted file mode 100644
index b0a224bca35e8fd50138700d080acf19f9cd2186..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geotiff_proj4.c
+++ /dev/null
@@ -1,726 +0,0 @@
-/******************************************************************************
- * $Id: geotiff_proj4.c,v 1.23 2007/03/13 18:04:33 fwarmerdam Exp $
- *
- * Project:  libgeotiff
- * Purpose:  Code to convert a normalized GeoTIFF definition into a PROJ.4
- *           (OGDI) compatible projection string.
- * 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.
- ******************************************************************************
- *
- * $Log: geotiff_proj4.c,v $
- * Revision 1.23  2007/03/13 18:04:33  fwarmerdam
- * added new zealand map grid support per bug 1519
- *
- * Revision 1.22  2005/03/04 04:32:37  fwarmerdam
- * added cylindricalequalarea support
- *
- * Revision 1.21  2003/08/21 18:42:39  warmerda
- * fixed support for ModelTypeGeographic as per email from Young Su, Cha
- *
- * Revision 1.20  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.19  2002/11/29 20:57:09  warmerda
- * added LCC1SP mapping
- *
- * Revision 1.18  2002/07/09 14:47:53  warmerda
- * fixed translation of polar stereographic
- *
- * Revision 1.17  2001/11/23 19:53:56  warmerda
- * free PROJ.4 definitions after use
- *
- * Revision 1.16  2000/12/05 19:21:45  warmerda
- * added cassini support
- *
- * Revision 1.15  2000/12/05 17:44:41  warmerda
- * Use +R_A for Miller and VanDerGrinten
- *
- * Revision 1.14  2000/10/13 18:06:51  warmerda
- * added econic support for PROJ.4 translation
- *
- * Revision 1.13  2000/09/15 19:30:48  warmerda
- * *** empty log message ***
- *
- * Revision 1.12  2000/09/15 18:21:07  warmerda
- * Fixed order of parameters for LCC 2SP.  When parameters
- * were read from EPSG CSV files the standard parallels and origin
- * were mixed up.  This affects alot of state plane zones!
- *
- * Revision 1.11  2000/06/06 17:39:45  warmerda
- * Modify to work with projUV version of library.
- *
- * Revision 1.10  1999/07/06 15:05:51  warmerda
- * Fixed up LCC_1SP notes.
- *
- * Revision 1.9  1999/05/04 16:24:49  warmerda
- * Fixed projection string formating with zones.
- *
- * Revision 1.8  1999/05/04 12:27:01  geotiff
- * only emit proj unsupported warning if DEBUG defined
- *
- * Revision 1.7  1999/05/04 03:14:59  warmerda
- * fixed use of foot instead of ft for units
- *
- * Revision 1.6  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.5  1999/04/29 23:02:24  warmerda
- * added mapsys utm test.
- *
- * Revision 1.4  1999/03/18 21:35:42  geotiff
- * Added reprojection functions
- *
- * Revision 1.3  1999/03/10 18:11:17  geotiff
- * Removed comment about this not being the master ... now it is.
- *
- * Revision 1.2  1999/03/10 18:10:27  geotiff
- * Avoid use of cpl_serv.h and CPLStrdup().
- *
- * Revision 1.1  1999/03/10 15:20:43  geotiff
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geotiff.h"
-#include "geo_normalize.h"
-#include "geovalues.h"
-#include <string.h>
-
-/************************************************************************/
-/*                          GTIFGetProj4Defn()                          */
-/************************************************************************/
-
-char * GTIFGetProj4Defn( GTIFDefn * psDefn )
-
-{
-    char	szProjection[512];
-    char	szUnits[24];
-    double      dfFalseEasting, dfFalseNorthing;
-
-    szProjection[0] = '\0';
-    
-/* ==================================================================== */
-/*      Translate the units of measure.                                 */
-/*                                                                      */
-/*      Note that even with a +units, or +to_meter in effect, it is     */
-/*      still assumed that all the projection parameters are in         */
-/*      meters.                                                         */
-/* ==================================================================== */
-    if( psDefn->UOMLength == Linear_Meter )
-    {
-        strcpy( szUnits, "+units=m " ); 
-    }
-    else if( psDefn->UOMLength == Linear_Foot )
-    {
-        strcpy( szUnits, "+units=ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Foot_US_Survey )
-    {
-        strcpy( szUnits, "+units=us-ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Foot_Indian )
-    {
-        strcpy( szUnits, "+units=ind-ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Link )
-    {
-        strcpy( szUnits, "+units=link " );
-    }
-    else if( psDefn->UOMLength == Linear_Yard_Indian)
-    {
-        strcpy( szUnits, "+units=ind-yd " );
-    }
-    else if( psDefn->UOMLength == Linear_Fathom )
-    {
-        strcpy( szUnits, "+units=fath " );
-    }
-    else if( psDefn->UOMLength == Linear_Mile_International_Nautical )
-    {
-        strcpy( szUnits, "+units=kmi " );
-    }
-    else
-    {
-        sprintf( szUnits, "+to_meter=%.10f", psDefn->UOMLengthInMeters );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      false easting and northing are in meters and that is what       */
-/*      PROJ.4 wants regardless of the linear units.                    */
-/* -------------------------------------------------------------------- */
-    dfFalseEasting = psDefn->ProjParm[5];
-    dfFalseNorthing = psDefn->ProjParm[6];
-    
-/* ==================================================================== */
-/*      Handle general projection methods.                              */
-/* ==================================================================== */
- 
-/* -------------------------------------------------------------------- */
-/*      Geographic.                                                     */
-/* -------------------------------------------------------------------- */
-    if(psDefn->Model==ModelTypeGeographic)
-    {
-        sprintf(szProjection+strlen(szProjection),"+proj=latlong ");
-        
-    }
- 
-/* -------------------------------------------------------------------- */
-/*      UTM - special case override on transverse mercator so things    */
-/*      will be more meaningful to the user.                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->MapSys == MapSys_UTM_North )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=utm +zone=%d ",
-                 psDefn->Zone );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transverse Mercator                                             */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_TransverseMercator )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=tmerc +lat_0=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Mercator							*/
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Mercator )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=merc +lat_ts=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cassini/Soldner                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_CassiniSoldner )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=cass +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Oblique Stereographic - Should this really map onto             */
-/*      Stereographic?                                                  */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_ObliqueStereographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=stere +lat_0=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Stereographic                                                   */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Stereographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=stere +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Polar Stereographic                                             */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_PolarStereographic )
-    {
-        if( psDefn->ProjParm[0] > 0.0 )
-            sprintf( szProjection+strlen(szProjection),
-                     "+proj=stere +lat_0=90 +lat_ts=%.9f +lon_0=%.9f "
-                     "+k=%.9f +x_0=%.3f +y_0=%.3f ",
-                     psDefn->ProjParm[0],
-                     psDefn->ProjParm[1],
-                     psDefn->ProjParm[4],
-                     dfFalseEasting,
-                     dfFalseNorthing );
-        else
-            sprintf( szProjection+strlen(szProjection),
-                     "+proj=stere +lat_0=-90 +lat_ts=%.9f +lon_0=%.9f "
-                     "+k=%.9f +x_0=%.3f +y_0=%.3f ",
-                     psDefn->ProjParm[0],
-                     psDefn->ProjParm[1],
-                     psDefn->ProjParm[4],
-                     dfFalseEasting,
-                     dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Equirectangular                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Equirectangular )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=eqc +lat_ts=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Gnomonic                                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Gnomonic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=gnom +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Orthographic                                                    */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Orthographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=ortho +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Lambert Azimuthal Equal Area                                    */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertAzimEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=laea +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Azimuthal Equidistant                                           */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_AzimuthalEquidistant )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=aeqd +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Miller Cylindrical                                              */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_MillerCylindrical )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=mill +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f +R_A ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Polyconic                                                       */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Polyconic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=poly +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      AlbersEqualArea                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_AlbersEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=aea +lat_1=%.9f +lat_2=%.9f +lat_0=%.9f +lon_0=%.9f"
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      EquidistantConic                                                */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_EquidistantConic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=eqdc +lat_1=%.9f +lat_2=%.9f +lat_0=%.9f +lon_0=%.9f"
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Robinson                                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Robinson )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=robin +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      VanDerGrinten                                                   */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_VanDerGrinten )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=vandg +lon_0=%.9f +x_0=%.3f +y_0=%.3f +R_A ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Sinusoidal                                                      */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Sinusoidal )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=sinu +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      LambertConfConic_2SP                                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertConfConic_2SP )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=lcc +lat_0=%.9f +lon_0=%.9f +lat_1=%.9f +lat_2=%.9f "
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      LambertConfConic_1SP                                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertConfConic_1SP )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=lcc +lat_0=%.9f +lat_1=%.9f +lon_0=%.9f"
-                 " +k_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      CT_CylindricalEqualArea                                         */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_CylindricalEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=cea +lat_ts=%.9f +lon_0=%.9f "
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      NewZealandMapGrid                                               */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_NewZealandMapGrid )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=nzmg +lat_0=%.9f +lon_0=%.9f"
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transverse Mercator - south oriented.                           */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_TransvMercator_SouthOriented )
-    {
-        /* this appears to be an unsupported formulation with PROJ.4 */
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      ObliqueMercator (Hotine)                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_ObliqueMercator )
-    {
-        /* not clear how ProjParm[3] - angle from rectified to skewed grid -
-           should be applied ... see the +not_rot flag for PROJ.4.
-           Just ignoring for now. */
-
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=omerc +lat_0=%.9f +lonc=%.9f +alpha=%.9f"
-                 " +k=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[4],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-
-/* ==================================================================== */
-/*      Handle ellipsoid information.                                   */
-/* ==================================================================== */
-    if( psDefn->Ellipsoid == Ellipse_WGS_84 )
-        strcat( szProjection, "+ellps=WGS84 " );
-    else if( psDefn->Ellipsoid == Ellipse_Clarke_1866 )
-        strcat( szProjection, "+ellps=clrk66 " );
-    else if( psDefn->Ellipsoid == Ellipse_Clarke_1880 )
-        strcat( szProjection, "+ellps=clrk80 " );
-    else if( psDefn->Ellipsoid == Ellipse_GRS_1980 )
-        strcat( szProjection, "+ellps=GRS80 " );
-    else
-    {
-        if( psDefn->SemiMajor != 0.0 && psDefn->SemiMinor != 0.0 )
-        {
-            sprintf( szProjection+strlen(szProjection),
-                     "+a=%.3f +b=%.3f ",
-                     psDefn->SemiMajor,
-                     psDefn->SemiMinor );
-        }
-    }
-
-    strcat( szProjection, szUnits );
-
-    return( strdup( szProjection ) );
-}
-
-#if !defined(HAVE_LIBPROJ) || !defined(HAVE_PROJECTS_H)
-
-int GTIFProj4ToLatLong( GTIFDefn * psDefn, int nPoints,
-                        double *padfX, double *padfY )
-{
-    (void) psDefn;
-    (void) nPoints;
-    (void) padfX;
-    (void) padfY;
-#ifdef DEBUG    
-    fprintf( stderr,
-             "GTIFProj4ToLatLong() - PROJ.4 support not compiled in.\n" );
-#endif    
-    return FALSE;
-}
-
-int GTIFProj4FromLatLong( GTIFDefn * psDefn, int nPoints,
-                          double *padfX, double *padfY )
-{
-    (void) psDefn;
-    (void) nPoints;
-    (void) padfX;
-    (void) padfY;
-#ifdef DEBUG    
-    fprintf( stderr,
-             "GTIFProj4FromLatLong() - PROJ.4 support not compiled in.\n" );
-#endif    
-    return FALSE;
-}
-#else
-
-#include "projects.h"
-
-#ifdef USE_PROJUV
-#  define UV projUV
-#endif
-
-/************************************************************************/
-/*                        GTIFProj4FromLatLong()                        */
-/*                                                                      */
-/*      Convert lat/long values to projected coordinate for a           */
-/*      particular definition.                                          */
-/************************************************************************/
-
-int GTIFProj4FromLatLong( GTIFDefn * psDefn, int nPoints,
-                          double *padfX, double *padfY )
-
-{
-    char	*pszProjection, **papszArgs;
-    PJ		*psPJ;
-    int		i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get a projection definition.                                    */
-/* -------------------------------------------------------------------- */
-    pszProjection = GTIFGetProj4Defn( psDefn );
-
-    if( pszProjection == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Parse into tokens for pj_init(), and initialize the projection. */
-/* -------------------------------------------------------------------- */
-    
-    papszArgs = CSLTokenizeStringComplex( pszProjection, " +", TRUE, FALSE );
-    free( pszProjection );
-
-    psPJ = pj_init( CSLCount(papszArgs), papszArgs );
-
-    CSLDestroy( papszArgs );
-
-    if( psPJ == NULL )
-    {
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Process each of the points.                                     */
-/* -------------------------------------------------------------------- */
-    for( i = 0; i < nPoints; i++ )
-    {
-        UV	sUV;
-
-        sUV.u = padfX[i] * DEG_TO_RAD;
-        sUV.v = padfY[i] * DEG_TO_RAD;
-
-        sUV = pj_fwd( sUV, psPJ );
-
-        padfX[i] = sUV.u;
-        padfY[i] = sUV.v;
-    }
-
-    pj_free( psPJ );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                         GTIFProj4ToLatLong()                         */
-/*                                                                      */
-/*      Convert projection coordinates to lat/long for a particular     */
-/*      definition.                                                     */
-/************************************************************************/
-
-int GTIFProj4ToLatLong( GTIFDefn * psDefn, int nPoints,
-                        double *padfX, double *padfY )
-
-{
-    char	*pszProjection, **papszArgs;
-    PJ		*psPJ;
-    int		i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get a projection definition.                                    */
-/* -------------------------------------------------------------------- */
-    pszProjection = GTIFGetProj4Defn( psDefn );
-
-    if( pszProjection == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Parse into tokens for pj_init(), and initialize the projection. */
-/* -------------------------------------------------------------------- */
-    
-    papszArgs = CSLTokenizeStringComplex( pszProjection, " +", TRUE, FALSE );
-    free( pszProjection );
-
-    psPJ = pj_init( CSLCount(papszArgs), papszArgs );
-
-    CSLDestroy( papszArgs );
-
-    if( psPJ == NULL )
-    {
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Process each of the points.                                     */
-/* -------------------------------------------------------------------- */
-    for( i = 0; i < nPoints; i++ )
-    {
-        UV	sUV;
-
-        sUV.u = padfX[i];
-        sUV.v = padfY[i];
-
-        sUV = pj_inv( sUV, psPJ );
-
-        padfX[i] = sUV.u * RAD_TO_DEG;
-        padfY[i] = sUV.v * RAD_TO_DEG;
-    }
-
-    pj_free( psPJ );
-
-    return TRUE;
-}
-
-
-#endif /* has projects.h and -lproj */
-
diff --git a/Utilities/otbgeotiff/geotiffio.h b/Utilities/otbgeotiff/geotiffio.h
deleted file mode 100644
index 72442b444044498552f4308d7205042b23a93c06..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geotiffio.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 
- * geotiffio.h
- * 
- * Standard include file for geotiff, including all
- *  key and code definitions.
- */
-
-
-#ifndef __geotiffio_h
-#define __geotiffio_h
-
-#include "geotiff.h"  /* public key interface */
-#include "geovalues.h" /* key code definitions */
-
-#endif /* __geotiffio_h */
-
diff --git a/Utilities/otbgeotiff/geovalues.h b/Utilities/otbgeotiff/geovalues.h
deleted file mode 100644
index 625d33a31a63263b04beea3e6abeba5aa07caadc..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/geovalues.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**********************************************************************
- *
- *  geovalues.h - Public registry for valid GEOTIFF  key-values.
- *
- *   Written By: Niles D. Ritter
- *
- *  Revision History:
- *
- *     Rev.#  Author     Date     Key Changes/Additions
- *     -----  ------  ----------  -------------------------------------
- *      0.1     ndr    10 Jun 95     Inital Beta Release
- *      0.2     ndr    12 Jul 95     New EPSG Tables installed.
- *      0.2.1   ndr    28 Jul 95     Added ModelType aliases to Model's
- *      1.0     ndr    18 Sep 95     Promoted to Revision 1.0
- *
- **********************************************************************/
-
-#ifndef __geovalues_h_
-#define __geovalues_h_
-
-/* If code values are added or modified, the "GvCurrentMinorRev" 
- * number should be incremented here. If new Keys are added, then the
- * GvCurrentRevision number should be incremented instead, and the
- * GvCurrentMinorRev should be reset to zero (see "geokeys.h").
- *
- * In addition, any changes here should be reflected in "geo_names.c"
- *
- */
- 
-#define GvCurrentMinorRev  0  /* First Major Rev EPSG Code Release  */
-
-
-/*
- * Universal key values -- defined for consistency
- */
-#define KvUndefined         0
-#define KvUserDefined   32767
-
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-#define ValuePair(name,value)    name = value,
-
-/*
- * The section numbers refer to the GeoTIFF Specification section
- * in which the code values are documented.
- */
- 
-/************************************************************
- *         6.3.1 GeoTIFF General Codes
- ************************************************************/
-
-/* 6.3.1.1 Model Type Codes */
-typedef enum {
-	ModelTypeProjected  = 1,  /* Projection Coordinate System */
-	ModelTypeGeographic = 2,  /* Geographic latitude-longitude System */
-	ModelTypeGeocentric = 3,   /* Geocentric (X,Y,Z) Coordinate System */
-	ModelProjected  = ModelTypeProjected,   /* alias */
-	ModelGeographic = ModelTypeGeographic,  /* alias */
-	ModelGeocentric = ModelTypeGeocentric   /* alias */
-} modeltype_t;
-
-/* 6.3.1.2 Raster Type Codes */
-typedef enum {
-	RasterPixelIsArea   = 1,  /* Standard pixel-fills-grid-cell */
-	RasterPixelIsPoint  = 2   /* Pixel-at-grid-vertex */
-} rastertype_t;
-
-typedef enum {
-#  include "epsg_gcs.inc"
-  geographic_end
-} geographic_t;
-
-typedef enum {
-#  include "epsg_datum.inc"
-   geodeticdatum_end
-} geodeticdatum_t;
-
-typedef enum {
-#  include "epsg_units.inc"
-   Unit_End
-} geounits_t;
-
-typedef enum {
-#  include "epsg_ellipse.inc"
-    ellipsoid_end
-} ellipsoid_t;
-
-typedef enum {
-#  include "epsg_pm.inc"
-   primemeridian_end
-} primemeridian_t;
-
-typedef enum {
-#  include "epsg_pcs.inc"
-   pcstype_end
-} pcstype_t;
-
-typedef enum {
-#  include "epsg_proj.inc"
-   projection_end
-} projection_t;
-
-typedef enum {
-#  include "geo_ctrans.inc"
-   coordtrans_end
-} coordtrans_t;
-
-typedef enum {
-#  include "epsg_vertcs.inc"
-   vertcs_end
-} vertcstype_t;
-
-
-typedef enum {
-	VDatumBase = 1
-} vdatum_t;
-
-#endif /* __geovalues_h_ */
-
diff --git a/Utilities/otbgeotiff/libxtiff/CMakeLists.txt b/Utilities/otbgeotiff/libxtiff/CMakeLists.txt
deleted file mode 100644
index 786f706f77f4a0bcef7ceafbd0f80c0d2d4b51ec..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/libxtiff/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-PROJECT(libxtiff)
-
-FILE(GLOB libxtiff_SRCS "*.c")
-FILE(GLOB libxtiff_HDRS "*.h")
-ADD_LIBRARY(otbxtiff ${libxtiff_SRCS})
-TARGET_LINK_LIBRARIES(otbxtiff itktiff)
-
-INSTALL(TARGETS otbxtiff
-RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
-LIBRARY DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
-ARCHIVE DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT Development)
-
-INSTALL(FILES ${libxtiff_HDRS_HDRS}
-    DESTINATION ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgeotiff/otbxtiff
-    COMPONENT Development)
-
diff --git a/Utilities/otbgeotiff/libxtiff/xtiff.c b/Utilities/otbgeotiff/libxtiff/xtiff.c
deleted file mode 100644
index 5e679dcc4ee60d6c8713c9d5648c0a6593d15c58..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/libxtiff/xtiff.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * xtiff.c
- *
- * Extended TIFF Directory GEO Tag Support.
- *
- *  You may use this file as a template to add your own
- *  extended tags to the library. Only the parts of the code
- *  marked with "XXX" require modification.
- *
- *  Author: Niles D. Ritter
- *
- *  Revisions:
- *    18 Sep 1995   -- Deprecated Integraph Matrix tag with new one.
- *                     Backward compatible support provided.  --NDR.
- */
- 
-#include "xtiffio.h"
-#include <stdio.h>
-#include "cpl_serv.h"
-
-/*  Tiff info structure.
- *
- *     Entry format:
- *        { TAGNUMBER, ReadCount, WriteCount, DataType, FIELDNUM, 
- *          OkToChange, PassDirCountOnSet, AsciiName }
- *
- *     For ReadCount, WriteCount, -1 = unknown.
- */
-
-static const TIFFFieldInfo xtiffFieldInfo[] = {
-  
-  /* XXX Insert Your tags here */
-    { TIFFTAG_GEOPIXELSCALE,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoPixelScale" },
-    { TIFFTAG_INTERGRAPH_MATRIX,-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"Intergraph TransformationMatrix" },
-    { TIFFTAG_GEOTRANSMATRIX,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoTransformationMatrix" },
-    { TIFFTAG_GEOTIEPOINTS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoTiePoints" },
-    { TIFFTAG_GEOKEYDIRECTORY,-1,-1, TIFF_SHORT,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoKeyDirectory" },
-    { TIFFTAG_GEODOUBLEPARAMS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoDoubleParams" },
-    { TIFFTAG_GEOASCIIPARAMS,	-1,-1, TIFF_ASCII,	FIELD_CUSTOM,
-      TRUE,	FALSE,	"GeoASCIIParams" },
-#ifdef JPL_TAG_SUPPORT
-    { TIFFTAG_JPL_CARTO_IFD,	 1, 1, TIFF_LONG,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"JPL Carto IFD offset" },  /** Don't use this! **/
-#endif
-};
-
-#define	N(a)	(sizeof (a) / sizeof (a[0]))
-static void _XTIFFLocalDefaultDirectory(TIFF *tif)
-{
-    /* Install the extended Tag field info */
-    TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));
-}
-
-
-/**********************************************************************
- *    Nothing below this line should need to be changed.
- **********************************************************************/
-
-static TIFFExtendProc _ParentExtender;
-
-/*
- *  This is the callback procedure, and is
- *  called by the DefaultDirectory method
- *  every time a new TIFF directory is opened.
- */
-
-static void
-_XTIFFDefaultDirectory(TIFF *tif)
-{
-    /* set up our own defaults */
-    _XTIFFLocalDefaultDirectory(tif);
-
-    /* Since an XTIFF client module may have overridden
-     * the default directory method, we call it now to
-     * allow it to set up the rest of its own methods.
-     */
-
-    if (_ParentExtender) 
-        (*_ParentExtender)(tif);
-}
-
-
-/**
-Registers an extension with libtiff for adding GeoTIFF tags.
-After this one-time intialization, any TIFF open function may be called in
-the usual manner to create a TIFF file that compatible with libgeotiff.
-The XTIFF open functions are simply for convenience: they call this
-and then pass their parameters on to the appropriate TIFF open function.
-
-<p>This function may be called any number of times safely, since it will
-only register the extension the first time it is called.
-**/
-
-void XTIFFInitialize(void)
-{
-    static int first_time=1;
-	
-    if (! first_time) return; /* Been there. Done that. */
-    first_time = 0;
-	
-    /* Grab the inherited method and install */
-    _ParentExtender = TIFFSetTagExtender(_XTIFFDefaultDirectory);
-}
-
-
-/**
- * GeoTIFF compatible TIFF file open function.
- *
- * @param name The filename of a TIFF file to open.
- * @param mode The open mode ("r", "w" or "a").
- *
- * @return a TIFF * for the file, or NULL if the open failed.
- *
-This function is used to open GeoTIFF files instead of TIFFOpen() from
-libtiff.  Internally it calls TIFFOpen(), but sets up some extra hooks
-so that GeoTIFF tags can be extracted from the file.  If XTIFFOpen() isn't
-used, GTIFNew() won't work properly.  Files opened
-with XTIFFOpen() should be closed with XTIFFClose().
-
-The name of the file to be opened should be passed as <b>name</b>, and an
-opening mode ("r", "w" or "a") acceptable to TIFFOpen() should be passed as the
-<b>mode</b>.<p>
-
-If XTIFFOpen() fails it will return NULL.  Otherwise, normal TIFFOpen()
-error reporting steps will have already taken place.<p>
- */
-
-TIFF*
-XTIFFOpen(const char* name, const char* mode)
-{
-    TIFF *tif;
-
-    /* Set up the callback */
-    XTIFFInitialize();	
-	
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFOpen(name, mode);
-    if (!tif) return tif;
-	
-    return tif;
-}
-
-TIFF*
-XTIFFFdOpen(int fd, const char* name, const char* mode)
-{
-    TIFF *tif;
-
-    /* Set up the callback */
-    XTIFFInitialize();	
-
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFFdOpen(fd, name, mode);
-    if (!tif) return tif;
-	
-    return tif;
-}
-
-TIFF*
-XTIFFClientOpen(const char* name, const char* mode, thandle_t thehandle,
-	    TIFFReadWriteProc RWProc, TIFFReadWriteProc RWProc2,
-	    TIFFSeekProc SProc, TIFFCloseProc CProc,
-	    TIFFSizeProc SzProc,
-	    TIFFMapFileProc MFProvc, TIFFUnmapFileProc UMFProc )
-{
-    TIFF *tif;
-    
-    /* Set up the callback */
-    XTIFFInitialize();	
-    
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFClientOpen(name, mode, thehandle,
-                         RWProc, RWProc2,
-                         SProc, CProc,
-                         SzProc,
-                         MFProvc, UMFProc);
-    
-    if (!tif) return tif;
-    
-    return tif;
-}
-
-/**
- * Close a file opened with XTIFFOpen().
- *
- * @param tif The file handle returned by XTIFFOpen().
- * 
- * If a GTIF structure was created with GTIFNew()
- * for this file, it should be freed with GTIFFree()
- * <i>before</i> calling XTIFFClose().
-*/
-
-void
-XTIFFClose(TIFF *tif)
-{
-    TIFFClose(tif);
-}
diff --git a/Utilities/otbgeotiff/libxtiff/xtiffio.h b/Utilities/otbgeotiff/libxtiff/xtiffio.h
deleted file mode 100644
index e11dda2c378d424248d92774b8010e5251a1cc76..0000000000000000000000000000000000000000
--- a/Utilities/otbgeotiff/libxtiff/xtiffio.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  xtiffio.h -- Public interface to Extended GEO TIFF tags
- *
- *    written by: Niles D. Ritter
- */
-
-#ifndef __xtiffio_h
-#define __xtiffio_h
-
-//#include "tiffio.h"   -> generates an compilation error
-#include "itk_tiff.h"
-#include "geo_config.h"
-
-/**
- * \file xtiffio.h
- *
- * Definitions relating GeoTIFF functions from geotiff.h to the TIFF
- * library (usually libtiff).
- */
-
-/* 
- *  Define public Tag names and values here 
- */
-
-/* tags 33550 is a private tag registered to SoftDesk, Inc */
-#define TIFFTAG_GEOPIXELSCALE       33550
-/* tags 33920-33921 are private tags registered to Intergraph, Inc */
-#define TIFFTAG_INTERGRAPH_MATRIX    33920   /* $use TIFFTAG_GEOTRANSMATRIX ! */
-#define TIFFTAG_GEOTIEPOINTS         33922
-/* tags 34263-34264 are private tags registered to NASA-JPL Carto Group */
-#ifdef JPL_TAG_SUPPORT
-#define TIFFTAG_JPL_CARTO_IFD        34263    /* $use GeoProjectionInfo ! */
-#endif
-#define TIFFTAG_GEOTRANSMATRIX       34264    /* New Matrix Tag replaces 33920 */
-/* tags 34735-3438 are private tags registered to SPOT Image, Inc */
-#define TIFFTAG_GEOKEYDIRECTORY      34735
-#define TIFFTAG_GEODOUBLEPARAMS      34736
-#define TIFFTAG_GEOASCIIPARAMS       34737
-
-/* 
- *  Define Printing method flags. These
- *  flags may be passed in to TIFFPrintDirectory() to
- *  indicate that those particular field values should
- *  be printed out in full, rather than just an indicator
- *  of whether they are present or not.
- */
-#define	TIFFPRINT_GEOKEYDIRECTORY	0x80000000
-#define	TIFFPRINT_GEOKEYPARAMS		0x40000000
-
-/**********************************************************************
- *    Nothing below this line should need to be changed by the user.
- **********************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/**********************************************************************
- * Do we want to build as a DLL on windows?
- **********************************************************************/
-#if !defined(CPL_DLL)
-#  if defined(_WIN32) && defined(BUILD_AS_DLL)
-#    define CPL_DLL     __declspec(dllexport)
-#  else
-#    define CPL_DLL
-#  endif
-#endif
-
-extern void CPL_DLL XTIFFInitialize();
-extern TIFF CPL_DLL * XTIFFOpen(const char* name, const char* mode);
-extern TIFF CPL_DLL * XTIFFFdOpen(int fd, const char* name, const char* mode);
-extern void CPL_DLL XTIFFClose(TIFF *tif);
-
-extern TIFF CPL_DLL * XTIFFClientOpen(const char* name, const char* mode, 
-                                      thandle_t thehandle,
-                                      TIFFReadWriteProc, TIFFReadWriteProc,
-                                      TIFFSeekProc, TIFFCloseProc,
-                                      TIFFSizeProc,
-                                      TIFFMapFileProc, TIFFUnmapFileProc);
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* __xtiffio_h */
-
diff --git a/Utilities/otbossim/README.txt b/Utilities/otbossim/README.txt
index d271d3900aa1740fb41828cc56fb0b1406ebc70a..448be544432fb54d5982833de486b0387f715d1e 100644
--- a/Utilities/otbossim/README.txt
+++ b/Utilities/otbossim/README.txt
@@ -1,9 +1,9 @@
 1. During the OSSIM integration operation, the include of <tiffio.h>, <tiff.h> and <jpeglib.h> have
 been replaced by <itk_tiff.h> and <itkjpeg/8/jpeglib.h> respectively.
 
-The ossim library is linked again ${ITK_TIFF_LIBRARY} and itkjpeg8. 
+The ossim library is linked again gdal and itkjpeg8. 
 
-This allows us to avoid looking for the right tiff and jpeg headers by ourselves, since it is already done
+This allows us to avoid looking for the right jpeg headers by ourselves, since it is already done
 by ITK.
 
 2. During generating otb::MapProjection<ossimLlxyProjection>, pb with polymorphism :
diff --git a/Utilities/otbossim/include/ossim/imaging/ossimTiffOverviewBuilder.h b/Utilities/otbossim/include/ossim/imaging/ossimTiffOverviewBuilder.h
index c4ad76d7124768a92614628769f61bc59a73ae9f..aec69507e413eef19c9c39c7f1413841deff715e 100644
--- a/Utilities/otbossim/include/ossim/imaging/ossimTiffOverviewBuilder.h
+++ b/Utilities/otbossim/include/ossim/imaging/ossimTiffOverviewBuilder.h
@@ -20,7 +20,7 @@
 #include <ossim/imaging/ossimOverviewBuilderBase.h>
 #include <ossim/imaging/ossimFilterResampler.h>
 
-#include <itk_tiff.h>
+#include <tiffio.h>
 
 class ossimImageHandler;
 class ossimFilename;
diff --git a/Utilities/otbossim/include/ossim/imaging/ossimTiffTileSource.h b/Utilities/otbossim/include/ossim/imaging/ossimTiffTileSource.h
index edba75857245784f589056d9329d07a5ce34a458..ba59205e429d7b93f8c8a5f83933d1c40b15b20c 100644
--- a/Utilities/otbossim/include/ossim/imaging/ossimTiffTileSource.h
+++ b/Utilities/otbossim/include/ossim/imaging/ossimTiffTileSource.h
@@ -16,7 +16,7 @@
 #ifndef ossimTiffTileSource_HEADER
 #define ossimTiffTileSource_HEADER
 
-#include <itk_tiff.h>
+#include <tiffio.h>
 
 #include <ossim/imaging/ossimImageHandler.h>
 #include <ossim/base/ossimIrect.h>
diff --git a/Utilities/otbossim/include/ossim/imaging/ossimTiffWriter.h b/Utilities/otbossim/include/ossim/imaging/ossimTiffWriter.h
index df6e48e5a869b6d002635f767ef3c778c9e63573..cfe58893367980586296e2f426f74ae5d6bd0820 100644
--- a/Utilities/otbossim/include/ossim/imaging/ossimTiffWriter.h
+++ b/Utilities/otbossim/include/ossim/imaging/ossimTiffWriter.h
@@ -13,7 +13,7 @@
 #ifndef ossimTiffWriter_HEADER
 #define ossimTiffWriter_HEADER
 
-#include <itk_tiff.h>
+#include <tiffio.h>
 #include <ossim/imaging/ossimImageFileWriter.h>
 #include <ossim/base/ossimKeywordlist.h>
 #include <ossim/base/ossimRefPtr.h>
diff --git a/Utilities/otbossim/include/ossim/support_data/ossimGeoTiff.h b/Utilities/otbossim/include/ossim/support_data/ossimGeoTiff.h
index af89821ec91bb27b15095380a428e1d653208b9a..88e192ddaf8eccdd226069378cef2e691ac6d6ee 100644
--- a/Utilities/otbossim/include/ossim/support_data/ossimGeoTiff.h
+++ b/Utilities/otbossim/include/ossim/support_data/ossimGeoTiff.h
@@ -22,7 +22,7 @@
   // #include <stdio.h>
 #include <vector>
 
-#include <itk_tiff.h>
+#include <tiffio.h>
 
 class ossimFilename;
 class ossimKeywordlist;
diff --git a/Utilities/otbossim/src/ossim/CMakeLists.txt b/Utilities/otbossim/src/ossim/CMakeLists.txt
index 9da07a594029c7105c6fb0047d2842d583d6b0b0..8dfbb15787d3e1dc2b42d7387e57481492f3e1c9 100644
--- a/Utilities/otbossim/src/ossim/CMakeLists.txt
+++ b/Utilities/otbossim/src/ossim/CMakeLists.txt
@@ -52,8 +52,6 @@ IF(WIN32)
   ENDIF(NOT BORLAND)
 ENDIF(WIN32)
 
-INCLUDE_DIRECTORIES(${OTB_BINARY_DIR}/Utilities/otbgeotiff/)
-
 ADD_CUSTOM_COMMAND(
   OUTPUT ${OTB_BINARY_DIR}/Utilities/otbossim/include/ossim/ossimVersion.h
   DEPENDS version-config
@@ -84,7 +82,7 @@ ${ossim_imaging_SRCS}
 ${ossim_parallel_SRCS}
 ${ossim_elevation_SRCS}
 )
-TARGET_LINK_LIBRARIES(otbossim otbgeotiff otbxtiff itktiff itkjpeg8 itkjpeg12 itkjpeg16 OpenThreads)
+TARGET_LINK_LIBRARIES(otbossim ${TIFF_LIBRARY} ${GEOTIFF_LIBRARY} itkjpeg8 itkjpeg12 itkjpeg16 OpenThreads)
 
 INSTALL(TARGETS otbossim
 RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
diff --git a/Utilities/otbossim/src/ossim/imaging/ossimImageFileWriter.cpp b/Utilities/otbossim/src/ossim/imaging/ossimImageFileWriter.cpp
index 441b130613b5125d0fd0915e0362bc335deeb6c9..2f35b50a1d36fc183db62651dff7833065a594d4 100644
--- a/Utilities/otbossim/src/ossim/imaging/ossimImageFileWriter.cpp
+++ b/Utilities/otbossim/src/ossim/imaging/ossimImageFileWriter.cpp
@@ -11,7 +11,7 @@
 //  $Id: ossimImageFileWriter.cpp 11184 2007-06-08 02:21:08Z gpotts $
 
 
-#include <itk_tiff.h> /* for tiff compression defines */
+#include <tiffio.h> /* for tiff compression defines */
 
 #include <ossim/ossimConfig.h>
 #include <ossim/imaging/ossimImageFileWriter.h>
diff --git a/Utilities/otbossim/src/ossim/imaging/ossimNitfWriter.cpp b/Utilities/otbossim/src/ossim/imaging/ossimNitfWriter.cpp
index 845669f1a15c497fc7edcfd06618a0e719a32885..73131d7350a25a303c5903833911d50da775aeb7 100644
--- a/Utilities/otbossim/src/ossim/imaging/ossimNitfWriter.cpp
+++ b/Utilities/otbossim/src/ossim/imaging/ossimNitfWriter.cpp
@@ -11,7 +11,7 @@
 #include <algorithm>
 #include <sstream>
 #include <iomanip>
-#include <itk_tiff.h>
+#include <tiffio.h>
 #include <ossim/imaging/ossimNitfWriter.h>
 #include <ossim/base/ossimDate.h>
 #include <ossim/base/ossimPreferences.h>
diff --git a/Utilities/otbossim/src/ossim/support_data/ossimGeoTiff.cpp b/Utilities/otbossim/src/ossim/support_data/ossimGeoTiff.cpp
index b132a323e8a358dec0dd4aa6ee35faf30120f559..f966ddc78f44275b2a5623a017e4df5b44b55434 100644
--- a/Utilities/otbossim/src/ossim/support_data/ossimGeoTiff.cpp
+++ b/Utilities/otbossim/src/ossim/support_data/ossimGeoTiff.cpp
@@ -33,8 +33,7 @@
 #include <ossim/base/ossimTieGptSet.h>
 #include <ossim/projection/ossimProjection.h>
 #include <ossim/base/ossimUnitTypeLut.h>
-#include <itk_tiff.h>
-//#include <tiffio.h>
+#include <tiffio.h>
 #include <xtiffio.h>
 #include <geotiff.h>
 #include <geo_normalize.h>
diff --git a/otbIncludeDirectories.cmake b/otbIncludeDirectories.cmake
index d01eb1056aa09a6666492345ac85a3c25ebc1b09..2c1f8b6c85be40ea52fda9c9b7271193b8336886 100644
--- a/otbIncludeDirectories.cmake
+++ b/otbIncludeDirectories.cmake
@@ -35,8 +35,6 @@ SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
   ${OTB_SOURCE_DIR}/Utilities/dxflib
   ${OTB_SOURCE_DIR}/Utilities/InsightJournal
   ${OTB_SOURCE_DIR}/Utilities/otb6S
-  ${OTB_SOURCE_DIR}/Utilities/otbgeotiff
-  ${OTB_SOURCE_DIR}/Utilities/otbgeotiff/libxtiff
   ${OTB_SOURCE_DIR}/Utilities/tinyXMLlib
 #  ${OTB_SOURCE_DIR}/Utilities/otbgalib
   ${OTB_SOURCE_DIR}/Utilities/otbkml
@@ -49,7 +47,8 @@ SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
   ${OTB_SOURCE_DIR}/Utilities/otbedison/segm
   ${OTB_SOURCE_DIR}/Utilities/otbedison/prompt
   ${OTB_SOURCE_DIR}/Utilities/otbedison/edge
-  ${OTB_SOURCE_DIR}/Utilities/otbsiftfast
+  ${OTB_SOURCE_DIR}/Utilities/otbsiftfast		
+
 )
 IF(OTB_COMPILE_JPEG2000)
   SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
@@ -207,8 +206,6 @@ SET(OTB_INCLUDE_DIRS_INSTALL_TREE ${OTB_INCLUDE_DIRS_INSTALL_TREE}
   ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbossimplugins
   ${OTB_INSTALL_INCLUDE_DIR}/Utilities/InsightJournal
   ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otb6S
-  ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgeotiff
-  ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgeotiff/libxtiff
   ${OTB_INSTALL_INCLUDE_DIR}/Utilities/tinyXMLlib
 #  ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbgalib
   ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbkml